Все несколько доменов неправильно указывают на один и тот же 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 (по умолчанию). Хорошей практикой является наличие первого виртуального хоста по умолчанию, который запрещает все, чтобы отловить такие проблемы. - person Graham Dumpleton; 20.01.2012