У меня есть проект django (django + apache + mod_wsgi + nginx) с несколькими приложениями, я хотел бы сопоставить каждое приложение как поддомен:
project/
app1 (domain.com)
app2 (sub1.domain.com)
app3 (sub3.domain.com)
У меня есть один скрипт .wsgi, обслуживающий проект, который хранится в папке / apache. Ниже мой файл vhost. Я использую один файл vhost вместо отдельных для каждого поддомена:
<VirtualHost *:8080>
ServerAdmin xxx@gmail.com
ServerName www.domain.com
ServerAlias domain.com
DocumentRoot /home/path/to/app/
Alias /admin_media/ /usr/local/lib/python2.6/dist-packages/django/contrib/admin/media
<Directory /home/path/to/wsgi/apache/>
Order deny,allow
Allow from all
</Directory>
LogLevel warn
ErrorLog /home/path/to/logs/apache_error.log
CustomLog /home/path/to/logs/apache_access.log combined
WSGIDaemonProcess domain.com user=www-data group=www-data threads=25
WSGIProcessGroup domain.com
WSGIScriptAlias / /home/path/to/apache/kcdf.wsgi
</VirtualHost>
<VirtualHost *:8081>
ServerAdmin xxx@gmail.com
ServerName sub1.domain.com
ServerAlias sub1.domain.com
DocumentRoot /home/path/to/app
Alias /admin_media/ /usr/local/lib/python2.6/dist-packages/django/contrib/admin/media
<Directory /home/path/to/wsgi/apache/>
Order deny,allow
Allow from all
</Directory>
LogLevel warn
ErrorLog /home/path/to/logs/apache_error.log
CustomLog /home/path/to/logs/apache_access.log combined
WSGIDaemonProcess sub1.domain.com user=www-data group=www-data threads=25
WSGIProcessGroup sub1.domain.com
WSGIScriptAlias / /home/path/to/apache/kcdf.wsgi
</VirtualHost>
Моя конфигурация Nginx для domain.com:
server {
listen 80;
server_name domain.com;
access_log off;
error_log off;
# proxy to Apache 2 and mod_wsgi
location / {
proxy_pass http://127.0.0.1:8080/;
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_max_temp_file_size 0;
client_max_body_size 10m;
client_body_buffer_size 128k;
proxy_connect_timeout 90;
proxy_send_timeout 90;
proxy_read_timeout 90;
proxy_buffer_size 4k;
proxy_buffers 4 32k;
proxy_busy_buffers_size 64k;
proxy_temp_file_write_size 64k;
}
}
Конфигурация для sub.domain.com:
server {
listen 80;
server_name sub.domain.com;
access_log off;
error_log off;
# proxy to Apache 2 and mod_wsgi
location / {
proxy_pass http://127.0.0.1:8081/;
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_max_temp_file_size 0;
client_max_body_size 10m;
client_body_buffer_size 128k;
proxy_connect_timeout 90;
proxy_send_timeout 90;
proxy_read_timeout 90;
proxy_buffer_size 4k;
proxy_buffers 4 32k;
proxy_busy_buffers_size 64k;
proxy_temp_file_write_size 64k;
}
}
Эта настройка, похоже, не работает, все указывает на основной домен. Я пробовал http://effbot.org/zone/django-multihost.htm, который работал, но, похоже, возникают проблемы с загрузкой моих css, изображений, js файлов.