Множество домейни всички неправилно сочат към един и същ VirtualHost с Django WSGI

Пускам Django с помощта на wsgi. Имам два домейна и един поддомейн, сочещ към три отделни виртуални хоста apache2. По някаква (вероятно много очевидна) причина всеки домейн се приземява към един и същи сайт (първият, който е пуснат онлайн с помощта на a2ensite). Моята конфигурация е както следва:

<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


person Andy Hillel    schedule 18.01.2012    source източник
comment
Използвали ли сте някъде директивата NameVirtualHost?   -  person Daniel Roseman    schedule 18.01.2012
comment
Да NameVirtualHost *:80 е декларирано в ports.conf   -  person Andy Hillel    schedule 18.01.2012


Отговори (1)


  • Уверете се, че дефинициите на vhosts се зареждат в ред, от най-специфични до най-малко специфични (например, евентуално като ги наименувате 10_dev.two.com.conf, 20_dev.one.com.conf, 30_one.com.conf)
  • Директивите ServerName и ServerAlias не трябва да имат / в края
person David Wolever    schedule 18.01.2012
comment
По-конкретно, когато ServerName/ServerAlias ​​не съвпадат правилно, Apache ще изпрати всички заявки до първия VirtualHost (по подразбиране). Добра практика е да имате първи VirtualHost по подразбиране, който има отказ от всички, за да улови подобни проблеми. - person Graham Dumpleton; 20.01.2012