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;
}



      

相关内容