Tengo una sola aplicación django-admin llamada myapp
que me gustaría implementar varias instancias en diferentes cajas físicas, una por cliente. Sin embargo, me gustaría que se pueda acceder a todos desde un dominio similar, mydomain.com/customer1/myapp
.múltiples aplicaciones django con nginx proxy_pass y reescritura
He jugueteado con la configuración de proxy específica e intenté varias cosas sugeridas en SO, pero ninguna se ajustaba a mi caso de uso ... y como sé muy poco acerca de nginx
y , ¡estoy perdido!
Mi nginx.conf actual es:
server {
listen 80;
server_name myserver.com
location ^~ /static {
alias /path/to/static/files/;
}
# location/{
# proxy_pass http://127.0.0.1:8001;
# }
location ^~ /customer1/myapp/static {
alias /path/to/static/files/;
}
location /customer1/myapp {
rewrite ^/customer1/myapp/(/?)(.*) /$2 break;
proxy_pass http://127.0.0.1:8001;
}
}
puedo llegar a la pantalla de inicio de sesión como se esperaba a través de myserver.com/customer1/myapp/admin
. Sin embargo, cuando intento iniciar sesión, nginx reescribe mi url en myserver.com/admin
, que no es una URL válida. ¿Cómo evito que nginx reescriba realmente la URL y solo cambie la URL que se transfiere al 127.0.0.1:8001
?
FWIW, estoy usando gunicornio para servir con gunicorn -b 127.0.0.1:8001 -n myapp
. Si descomiento la ubicación /
y elimino los dos últimos bloques de ubicación, la aplicación funciona muy bien.
Estoy lejos de establecer este enfoque si hay alternativas. El objetivo es evitar modificar el código de django para cada implementación y, en su lugar, agregar código mínimo al nginx.conf para nuevas implementaciones.
Las preguntas sobre la implementación pueden ser más adecuadas para serverfault.com –
No entiendo, ¿está tratando de hacer que django url reverse genere/customerX/myapp/admin/en lugar de/admin /? – jpic
@jpic No, quiero que django solo vea las URL raíz. p.ej. '127.0.0.1: 8001/admin'. Supongo que puedo hacer esto con nginx, pero no estoy seguro de cómo. Y notado sobre 'serverfault.com', publicaré allí si no encuentro nada aquí, gracias. – Justin