Nginx
Django 和 Flask 與 gunicorn 在同一個 nginx 伺服器上
當我訪問 mysite.com 時,我目前在我的主站點上執行了一個 Djago 應用程序。但是,我希望 mysite.com/flaskapp 執行一個單獨的 Flask 應用程序。我能夠設置兩個支持 nginx 站點的配置文件並在不同的埠上執行每個應用程序,但由於各種原因,我想在同一個埠上執行它們(如果可能的話)。當我在我的 nginx 伺服器文件中配置我的 flaskapp/ 位置時,我收到 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
,一切都應該工作。