
Actualmente tengo una aplicación Djago ejecutándose en mi sitio principal cuando visito mysite.com. Sin embargo, me gustaría que mysite.com/flaskapp ejecute una aplicación Flask separada. Puedo configurar dos archivos de configuración habilitados para el sitio nginx y ejecutar cada aplicación en un puerto diferente pero, por varias razones, me gustaría ejecutarlas todas en el mismo puerto (si es posible). Cuando configuro mi ubicación flaskapp/ en mi archivo de servidor nginx, aparece un error 404.
Aquí está mi archivo de configuración de supervisor:
[program:MYSITE]
command=/var/www/html/MYSITE/prodenv/bin/gunicorn --workers 3 --bind unix:/var/www/html/MYSITE/public_html/MYSITE.sock MYSITE.wsgi
directory=/var/www/html/MYSITE/public_html
autostart=true
autorestart=true
stderr_logfile=/var/log/MYSITE.err.log
stdout_logfile=/var/log/MYSITE.out.log
[program:FLASKAPP]
directory=/var/www/html/MYSITE/public_html/FLASKAPP/api
command=/var/www/html/MYSITE/public_html/FLASKAPP/venv/bin/gunicorn --workers 3 --bind unix:/var/www/html/MYSITE/public_html/FLASKAPP/api/FLASKAPP.sock FLASKAPP:app
autostart=true
autorestart=true
stderr_logfile=/var/log/FLASKAPP.err.log
stdout_logfile=/var/log/FLASKAPP.out.log
Y mi archivo habilitado para el sitio nginx:
server {
listen 80;
listen [::]:80;
server_name MYSITE;
location = /favicon.ico { access_log off; log_not_found off; }
location /static/ {
root /var/www/html/MYSITE/public_html;
expires 30d;
}
location / {
include proxy_params;
proxy_pass http://unix:/var/www/html/MYSITE/public_html/MYSITE.sock;
}
location /FLASKAPP/ {
include proxy_params;
proxy_pass http://unix:/var/www/html/MYSITE/public_html/FLASKAPP/api/FLASKAPP.sock;
}
}
¿Algunas ideas? ¡Gracias!
Respuesta1
Hay un error tipográfico en proxy_path. Lo has hecho proxy_pass http://unix:/var/www/html/MYSITE/public_html/FLASKAPP/api/FLASKAPP.sock;
, pero debería haberlo fastcgi_pass unix:/var/www/html/MYSITE/public_html/FLASKAPP/api/FLASKAPP.sock;
. Elimine http://
, cambie proxy_pass
a fastcgi_pass
y todo debería funcionar.
Respuesta2
Me lo imaginé. Reescribí la URL para eliminar el subdirectorio y ahora todo funciona.
antes:
location /FLASKAPP/ {
include proxy_params;
proxy_pass http://unix:/var/www/html/MYSITE/public_html/FLASKAPP/api/FLASKAPP.sock;
}
después:
location /FLASKAPP/ {
include proxy_params;
proxy_pass http://unix:/var/www/html/MYSITE/public_html/FLASKAPP/api/FLASKAPP.sock;
rewrite ^/FLASKAPP(.*)$ $1 break;
}