Когда я захожу на mysite.com, на моем основном сайте работает приложение Djago. Однако я бы хотел, чтобы mysite.com/flaskapp запускал отдельное приложение Flask. Я могу настроить два файла конфигурации с поддержкой сайта nginx и запускать каждое приложение на другом порту, но по разным причинам я хотел бы запускать их все на одном порте (если возможно). Когда я настраиваю свое flaskapp / location в файле сервера nginx, я получаю ошибку 404.
Вот мой файл конфигурации супервизора:
[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
И мой файл с поддержкой сайта 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;
}
}
Любые идеи? Спасибо!
Я понял. Я переписал URL-адрес, чтобы удалить подкаталог, и теперь все работает.
перед:
location /FLASKAPP/ {
include proxy_params;
proxy_pass http://unix:/var/www/html/MYSITE/public_html/FLASKAPP/api/FLASKAPP.sock;
}
после:
location /FLASKAPP/ {
include proxy_params;
proxy_pass http://unix:/var/www/html/MYSITE/public_html/FLASKAPP/api/FLASKAPP.sock;
rewrite ^/FLASKAPP(.*)$ $1 break;
}
Опечатка в proxy_path. У тебя есть proxy_pass http://unix:/var/www/html/MYSITE/public_html/FLASKAPP/api/FLASKAPP.sock;
, но должно быть fastcgi_pass unix:/var/www/html/MYSITE/public_html/FLASKAPP/api/FLASKAPP.sock;
. удалять http://
, изменение proxy_pass
к fastcgi_pass
и все должно работать.