Finalmente hice andar nginx con uwsgi.
Al principio lo hice funcionar con supervisor + uwsgi corriendo en un socket para cada sitio, pero luego de intentar (ya que no encontré documentación de cómo hacerlo) pude poner uwsgi en modo vhost para solo tener una instancia corriendo para todos los sitios.
Desde supervisor, uwsgi esta funcionando con los siguientes parametros:
[program:uwsgi_vhost]
command=/usr/local/bin/uwsgi
--socket 127.0.0.1:1088
--processes 3
--master
--uid www-data
--no-site
--vhost
--reload-os-env
user=www-data
autostart=true
autorestart=true
stdout_logfile=/var/log/uwsgi_main.log
redirect_stderr=true
stopsignal=QUIT
En nginx , un virtualhost de ejemplo (netpastiche.com.ar)
server {
listen xx.xx.xxx.xx:80;
server_name netpastiche.com.ar;
# uwsgi for django
location / {
include uwsgi_params;
uwsgi_param UWSGI_CHDIR /path/to/netpastiche.com.ar/public_html;
uwsgi_param UWSGI_MODULE netpastiche_wsgi;
uwsgi_pass 127.0.0.1:1088;
}
# static content
location /static {
root /path/to/netpastiche.com.ar/public_html;
expires 24h;
}
}
Lo mas dificil fue hacer funcionar el sitio, ya que no estaba incluyendo en el pythonpath los paths donde estaba django instalado (netpastiche_uwsgi.py)
import os, sys
sys.path.append(os.path.dirname(__file__))
sys.path.append('/usr/lib/pymodules/python2.6')
sys.path.append('/usr/local/lib/python2.6/dist-packages/')
os.environ['DJANGO_SETTINGS_MODULE'] = 'settings'
import django.core.handlers.wsgi
application = django.core.handlers.wsgi.WSGIHandler()