Django 和 Flask 與 Gunicorn 位於同一 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; 
        }


}

有任何想法嗎?謝謝!

答案1

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_passfastcgi_pass,一切都應該正常。

答案2

我想到了。我重寫了 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;
}



      

相關內容