2012-01-18 64 views
0

我正在使用wsgi运行Django。我有两个域和一个子域指向三个独立的apache2虚拟主机。对于一些(可能非常明显)的原因,每个域名都登陆到同一个网站(第一个使用a2ensite在线投放的网站)。我的配置如下:多个域都不正确地指向与Django相同的VirtualHost WSGI

<VirtualHost *:80> 
    ServerName www.one.com/ 
    ServerAlias one.com 
    ServerAdmin [email protected] 

    DocumentRoot /srv/www/one.com/public_html 

    <Directory /srv/www/one.com/application> 
     Order allow,deny 
     Allow from all 
    </Directory> 

    WSGIDaemonProcess one.com processes=2 threads=15 display-name=%{GROUP} 
    WSGIProcessGroup one.com 
    WSGIScriptAlias//srv/www/one/application/apache/one.wsgi 

    Alias /robots.txt /srv/www/one.com/public_html/robots.txt 
    Alias /favicon.ico /srv/www/one.com/public_html/favicon.ico 
    Alias /media /srv/www/one.com/public_html/media 
    Alias /static /srv/www/one.com/public_html/static 

    ErrorLog /srv/www/one.com/logs/error.log 
    CustomLog /srv/www/one.com/logs/access.log combined 

</VirtualHost> 

////// /// one.wsgi //////////

import os 
import sys 

sys.path.append('/srv/www/one.com/application') 

os.environ['DJANGO_SETTINGS_MODULE'] = 'settings' 

import django.core.handlers.wsgi 
application = django.core.handlers.wsgi.WSGIHandler() 

//////// //////////

<VirtualHost *:80> 
    ServerName dev.one.co.uk/ 
    ServerAlias www.dev.one.co.uk/ 
    ServerAdmin [email protected] 

    DocumentRoot /srv/www/dev.one.com/public_html 


    <Directory /srv/www/dev.one.com/application> 
     Order allow,deny 
     Allow from all 
    </Directory> 

    WSGIScriptAlias//srv/www/dev.one.com/application/apache/devone.wsgi 

    Alias /robots.txt /srv/www/dev.one.com/public_html/robots.txt 
    Alias /favicon.ico /srv/www/dev.one.com/public_html/favicon.ico 
    Alias /media /srv/www/dev.one.com/public_html/media 
    Alias /static /srv/www/dev.one.com/public_html/static 

    ErrorLog /srv/www/dev.one.com/logs/error.log 
    CustomLog /srv/www/dev.one.com/logs/access.log combined 

</VirtualHost> 

//////// devone.wsgi ///////////

import os 
import sys 

sys.path.append('/srv/www/dev.one.com/application') 

os.environ['DJANGO_SETTINGS_MODULE'] = 'settings' 

import django.core.handlers.wsgi 
application = django.core.handlers.wsgi.WSGIHandler() 

//// /////////

<VirtualHost *:80> 
    ServerName dev.two.com/ 
    ServerAlias www.dev.two.com/ 
    ServerAdmin [email protected] 

    DocumentRoot /srv/www/dev.two.com/public_html 


    <Directory /srv/www/dev.two.com/application> 
     Order allow,deny 
     Allow from all 
    </Directory> 

    WSGIScriptAlias//srv/www/dev.two.com/application/apache/devtwo.wsgi 

    Alias /robots.txt /srv/www/dev.two.com/public_html/robots.txt 
    Alias /favicon.ico /srv/www/dev.two.com/public_html/favicon.ico 
    Alias /media /srv/www/dev.two.com/public_html/media 
    Alias /static /srv/www/dev.two.com/public_html/static 

    ErrorLog /srv/www/dev.two.com/logs/error.log 
    CustomLog /srv/www/dev.two.com/logs/access.log combined 

</VirtualHost> 

//////// devtwo.wsgi /////

import os 
import sys 

sys.path.append('/srv/www/dev.two.com/application') 

os.environ['DJANGO_SETTINGS_MODULE'] = 'settings' 

import django.core.handlers.wsgi 
application = django.core.handlers.wsgi.WSGIHandler() 

的域都打我的服务器IP罚款,但他们所有的土地在同一页上。我错过了什么?提前致谢!

更新:

NameVirtualHost *:80 

是ports.conf宣布

+0

您是否在任何地方使用了[NameVirtualHost](http://httpd.apache.org/docs/2.0/mod/core.html#namevirtualhost)指令? – 2012-01-18 13:26:02

+0

是NameVirtualHost *:80在ports.conf中声明 – 2012-01-18 15:14:09

回答

1
  • 确保定义正在被命名加载顺序,从最具体到最不具体的(例如,可能是虚拟主机他们10_dev.two.com.conf20_dev.one.com.conf,30_one.com.conf
  • ServerNameServerAlias指令shouldn没有结尾/
+0

就是这样。非常愚蠢的错误,谢谢。 – 2012-01-18 16:28:38

+0

特别是,当ServerName/ServerAlias不正确匹配时,Apache将发送所有请求到第一个VirtualHost(默认)。良好的做法有一个第一个默认的VirtualHost拒绝所有人来捕捉这些问题。 – 2012-01-20 06:05:41