Gunicorn 如何在托管多个 Flask 站点的服务器上工作?

How does Gunicorn work on a server hosting several Flask sites?

--我正在使用 NGINX 作为静态 server/reverse-proxy 在 Linode VPS 上部署几个 Flask-based 站点。

--通过阅读传入的 header 并为每个给定站点使用 /etc/nginx .conf 文件,我完全理解它如何适用于多个站点。

--我无法弄清楚的是 each 站点的 venv 中安装的 gunicorn 如何 started-up 处理从 VPS-wide NGINX 服务器。

--我看到教程中使用了 supervisord,但仅针对单个站点,而不是 VPS 级别(如 NGINX)的 supervisord 运行 如何可以 start-up Gunicorn for一个特定的网站。我也不清楚为什么每个站点都有自己的 Gunicorn 安装。这是如何工作的?

抱歉,如果这与其他问题重复,但我在这里或其他地方找不到任何答案。

NGINX 应该将流量重定向到适当的端口。每个 flask 站点都需要它自己的 gunicorn worker 来启动它。

例如,您在主管配置中针对每个站点的 运行 命令如下所示:

[program:site1]
command=venv1/bin/gunicorn --workers num_workers --bind localhost:8081 flask_app1:app
#etc...

[program:site2]
command=venv2/bin/gunicorn --workers num_workers --bind localhost:8082 flask_app2:app
#etc...

希望这能增加一些清晰度

编辑:

这是一个监听 http 的网站的示例 NGINX 配置。

#Config Contents
server {
    listen       80;
    server_name  site.your.domain;
    # Or use the following if you do not have a domain
    #server_name 123.123.123.123;

    location / {
        proxy_pass http://127.0.0.1:8081;
        proxy_set_header Host $host;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Scheme $scheme;
    }
}