Single django instance with subdomains for each app in the django project

Posted by jwesonga on Stack Overflow See other posts from Stack Overflow or by jwesonga
Published on 2010-04-25T13:18:27Z Indexed on 2010/04/25 13:23 UTC
Read the original article Hit count: 481

Filed under:
|
|

I have a django project (django+apache+mod_wsgi+nginx) with multiple apps, I'd like to map each app as a subdomain:

project/
      app1 (domain.com)
      app2 (sub1.domain.com)
      app3 (sub3.domain.com)

I have a single .wsgi script serving the project, which is stored in a folder /apache. Below is my vhost file. I'm using a single vhost file instead of separate ones for each sub-domain:

<VirtualHost *:8080>
    ServerAdmin [email protected]
    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 [email protected]
    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>

My Nginx configuration for the 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;
    }
}

Configuration for the 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;
    }
}

This set up doesn't seem to work, everything seems to point to the main domain. I've tried http://effbot.org/zone/django-multihost.htm which kind of worked but seems to have issues with loading my css,images,js files.

© Stack Overflow or respective owner

Related posts about django

Related posts about apache