多个子域名冲突的问题:Ubuntu django nginx+apache mod_wsgi

0 投票
1 回答
1377 浏览
提问于 2025-04-16 11:38

我在我的一个子域名上安装了django应用,地址是subdomain1.mydomain.com,使用的是nginx和apache mod_wsgi,运行在Ubuntu系统上。
之前一切都很好,直到我在subdomain2.mydomain.com上安装了另一个django应用。现在subdomain1.mydomain.com却开始指向subdomain2.mydomain.com上安装的应用了。

以下是我的nginx和apache的配置文件..
subdomain1.mydomain.com的nginx配置:

upstream  subdomain1_backend  {
    server  127.0.0.1:8080;
}  
server {  
    listen       80;  
    server_name  subdomain1.mydomain.com www.subdomain1.mydomain.com;  
    location / {
        proxy_pass http://subdomain1_backend;
    }  
}  

subdomain2.mydomain.com的nginx配置:

upstream  subdomain2_backend  {
    server  127.0.0.1:8080;
}  
server {  
    listen       80;  
    server_name  subdomain2.mydomain.com www.subdomain2.mydomain.com;  
    location / {
        proxy_pass http://subdomain2_backend;
    }  
}

subdomain1.mydomain.com的apache配置

<VirtualHost *:8080>  

 ServerAdmin admin@mydomain.com
 ServerName  subdomain1.mydomain.com
 ServerAlias www.suddomain1.mydomain.com

 DocumentRoot "/srv/webapps/subdomain1.mydomain.com"

 WSGIScriptAlias / /srv/webapps/subdomain1.mydomain.com/conf/app.wsgi  
 WSGIDaemonProcess www.subdomain1.mydomain.com user=www-data group=www-data threads=15 processes=2 maximum-requests=10000    
 WSGIProcessGroup www.subdomain1.mydomain.com  
 <Directory /srv/webapps/subdomain1.mydomain.com/app/>  
   Order deny,allow  
   Allow from all  
 </Directory>  
 ...   
 </VirtualHost></code>

subdomain2.mydomain.com的apache配置

<VirtualHost *:8080>  

 ServerAdmin admin@mydomain.com
 ServerName  subdomain2.mydomain.com
 ServerAlias www.suddomain2.mydomain.com

 DocumentRoot "/srv/webapps/subdomain2.mydomain.com"  
 WSGIScriptAlias / /srv/webapps/subdomain2.mydomain.com/conf/app.wsgi  
 WSGIDaemonProcess www.subdomain2.mydomain1.com user=www-data group=www-data threads=15   processes=2 maximum-requests=10000    
 WSGIProcessGroup www.subdomain2.mydomain.com  
 <Directory /srv/webapps/subdomain2.mydomain.com/app/>  
   Order deny,allow  
   Allow from all  
 </Directory>  
 ...   
 </VirtualHost>

有人能告诉我哪里出错了吗?
提前谢谢大家!

1 个回答

2

我看到你们的两个Django应用程序都在同一个地址和端口上运行。

默认情况下,nginx不会转发“Host:”这个头信息。

你需要在nginx的配置文件中添加这一行:

proxy_set_header Host $host;

撰写回答