2012-07-30 21 views
5

Estoy tratando de servir dos sitios de Django usando Nginx.Sirviendo múltiples sitios de Django con Nginx con UWSGI

Puedo servir cualquiera de ellos sin problema, pero si activo ambos, ambos se envían a un sitio. Esta es la primera vez que uso Nginx, generalmente uso Apache, así que tengan paciencia conmigo.

Tengo dos sitios en sitios habilitados con este aspecto:

site1.com:

server{ 
    server_name www.site1.com; 
    listen 69.164.211.85:80; 
    access_log /var/www/site1.env/logs/access.log; 
    error_log /var/www/site1.env/logs/error.log; 

    location /static/ { 
      # Point this wherever the static files for your django app are $ 
      autoindex on; 
      alias /var/www/site1.env/Site1/static/; 
    } 

    location/{ 
     uwsgi_pass 127.0.0.1:3031; 
     include  uwsgi_params; 
     uwsgi_param UWSGI_APPID site1; 
     uwsgi_param UWSGI-FILE /var/www/site1.env/Site1/wsgi/site1_wsgi.py; 
    } 
} 

site2.net

server{ 
     server_name www.site2.net; 
     listen 69.164.211.85:80; 
     access_log /var/www/site2.env/logs/access.log; 
     error_log /var/www/site2.env/logs/error.log; 

     location /static/ { 
       # Point this wherever the static files for your django app are $ 
       autoindex on; 
       alias /var/www/site2.env/Site2/static/; 
     } 

     location/{ 
      uwsgi_pass 127.0.0.1:3032; 
      include  uwsgi_params; 
      uwsgi_param UWSGI_APPID site2; 
      uwsgi_param UWSGI-FILE /var/www/site2.env/Site2/wsgi/site2.py; 
     } 

} 

También estoy corriendo dos casos de UWSGI que comienzan con estos scripts:

Sitio 1:

description "uWSGI server" 

start on runlevel [2345] 
stop on runlevel [!2345] 

respawn 
exec /usr/local/bin/uwsgi \ 
--home /var/www/site1.env/Site1/ \ 
--socket 127.0.0.1:3031 \ 
--chmod-socket \ 
--module site1_wsgi \ 
--pythonpath /var/www/site1.env/Site1/wsgi \ 
-H /var/www/site1.env 

Sitio 2:

description "uWSGI server" 

start on runlevel [2345] 
stop on runlevel [!2345] 

respawn 
exec /usr/local/bin/uwsgi \ 
--home /var/www/site2.env/Site2/ \ 
--socket 127.0.0.1:3032 \ 
--chmod-socket \ 
--module site2 \ 
--pythonpath /var/www/site2.env/Site2/wsgi \ 
-H /var/www/sit2.env 

Esto es lo que se ve mi archivo nginx.conf como:

user www-data; 
worker_processes 4; 
pid /var/run/nginx.pid; 

events { 
     worker_connections 768; 
     # multi_accept on; 
} 

http { 

    ## 
    # Basic Settings 
    ## 

    sendfile on; 
    tcp_nopush on; 
    tcp_nodelay on; 
    keepalive_timeout 65; 
    types_hash_max_size 2048; 
    # server_tokens off; 

    # server_names_hash_bucket_size 64; 
    # server_name_in_redirect off; 

    include /etc/nginx/mime.types; 
    default_type application/octet-stream; 

    ## 
    # Logging Settings 
    ## 

    access_log /var/log/nginx/access.log; 
    error_log /var/log/nginx/error.log; 

    ## 
    # Gzip Settings 
    ## 

    gzip on; 
    gzip_disable "msie6"; 

    # gzip_vary on; 
    # gzip_proxied any; 
    # gzip_comp_level 6; 
    # gzip_buffers 16 8k; 
    # gzip_http_version 1.1; 
    # gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/$ 

    ## 
    # Virtual Host Configs 
    ## 

    include /etc/nginx/conf.d/*.conf; 
    include /etc/nginx/sites-enabled/*; 
} 

    ## 
# Logging Settings 
    ## 
    access_log /var/log/nginx/access.log; 
    error_log /var/log/nginx/error.log; 

    ## 
    # Gzip Settings 
    ## 

    gzip on; 
    gzip_disable "msie6"; 

    # gzip_vary on; 
    # gzip_proxied any; 
    # gzip_comp_level 6; 
    # gzip_buffers 16 8k; 
    # gzip_http_version 1.1; 
    # gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/$ 

    ## 
    # Virtual Host Configs 
    ## 

    include /etc/nginx/conf.d/*.conf; 
    include /etc/nginx/sites-enabled/*; 
} 

yo habría pensado uwsgi_pass ser ajustado a diferentes puertos les impediría ir a la el mismo pero claramente me falta algo más. Agradecería cualquier ayuda, ¡gracias!

Respuesta

3

Ah, puede haber sido porque no incluí los nombres del servidor sin www. cuando hago eso parece funcionar.

+0

Me pregunto qué maneja las solicitudes si llama sin 'www.' con la configuración de arriba? ¿Tiene un 'server {name_name _ predeterminado; } 'definición? – Tisho

+1

@Tisho No, no lo hice, inhabilité el valor predeterminado. Tengo la sensación de que lo estaba enviando al que estaba activo primero. – DNN

1

La configuración de nginx me parece bien. Hice una prueba con el mismo código (dos sitios diferentes que apuntan a diferentes puertos) y comencé a escuchar en los puertos, y cada sitio va al puerto especificado.

Tengo algunas dudas sobre la configuración de uwsgi, y más especialmente sobre la configuración del entorno/ruta. Pruebe lo siguiente - crear un archivo uwsgi1.conf, y pegue el siguiente no:

[uwsgi] 
socket = 127.0.0.1:3031 
master = true 
processes = 8 
env = DJANGO_SETTINGS_MODULE=site1.settings 
chdir = /var/www/site1.env/Site1/ 
pythonpath = /var/www/site1.env/ 
module = django.core.handlers.wsgi:WSGIHandler() 
-H /var/www/site1.env 

y un segundo uwsgi2.conf con el siguiente contenido:

[uwsgi] 
socket = 127.0.0.1:3032 
master = true 
processes = 8 
env = DJANGO_SETTINGS_MODULE=site2.settings 
chdir = /var/www/site2.env/Site2/ 
pythonpath = /var/www/site2.env/ 
module = django.core.handlers.wsgi:WSGIHandler() 
-H /var/www/site2.env 

y cambiar los valores fror env /, chdir, PYTHONPATH si es necesario. A continuación, inicie los sitios como:

respawn 
exec /usr/local/bin/uwsgi --ini /path/to/uwsgi1.conf 

y uwsgi2.conf para la segunda.

+0

Acabo de hacer eso y sigo teniendo el mismo problema. ¿Hay algo más que podría extrañar? – DNN

Cuestiones relacionadas