
Atualmente, tenho um aplicativo Djago em execução no meu site principal quando visito mysite.com. No entanto, gostaria que mysite.com/flaskapp executasse um aplicativo Flask separado. Consigo configurar dois arquivos de configuração habilitados para site nginx e executar cada aplicativo em uma porta diferente, mas, por vários motivos, gostaria de executá-los todos na mesma porta (se possível). Quando configuro meu flaskapp/location no arquivo do servidor nginx, recebo um erro 404.
Aqui está meu arquivo de configuração do 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
E meu arquivo habilitado para site 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;
}
}
Alguma ideia? Obrigado!
Responder1
Há um erro de digitação em proxy_path. Você tem proxy_pass http://unix:/var/www/html/MYSITE/public_html/FLASKAPP/api/FLASKAPP.sock;
, mas deveria haver fastcgi_pass unix:/var/www/html/MYSITE/public_html/FLASKAPP/api/FLASKAPP.sock;
. Remova http://
, mude proxy_pass
para fastcgi_pass
e tudo deverá funcionar.
Responder2
Eu descobri. Reescrevi o URL para remover o subdiretório e agora tudo funciona.
antes:
location /FLASKAPP/ {
include proxy_params;
proxy_pass http://unix:/var/www/html/MYSITE/public_html/FLASKAPP/api/FLASKAPP.sock;
}
depois:
location /FLASKAPP/ {
include proxy_params;
proxy_pass http://unix:/var/www/html/MYSITE/public_html/FLASKAPP/api/FLASKAPP.sock;
rewrite ^/FLASKAPP(.*)$ $1 break;
}