当前位置: 首页 > 面试题库 >

使用Nginx和Gunicorn运行Flask应用

郝乐心
2023-03-14
问题内容

我是新来的,仅使用nginx提供静态文件。我现在已经安装了flask and gunicorn。如果我运行gunicorn -b 127.0.0.2:8000 hello:app,然后从服务器中获取它,它将运行良好。但是,如果尝试从浏览器访问它,它将返回404错误(我正在托管位于root用户的wordpress网站的服务器上运行此错误)。

Flask应用程序:

from flask import Flask
from werkzeug.contrib.fixers import ProxyFix
app = Flask(__name__)

@app.route('/')
def hello():
    return "Hello world!"

app.wsgi_app = ProxyFix(app.wsgi_app)

if __name__ == '__main__':
    app.run()

以及我的nginx配置的相关部分:

location /flask {
                 proxy_set_header       Host            $http_host;
                 proxy_set_header       X-Real-IP       $remote_addr;
                 proxy_set_header       X-Forwarded-For $proxy_add_x_forwarded_\
for;
                 proxy_pass             http://127.0.0.2:8000;
                 proxy_redirect         off;
    }

我希望这是所有相关信息。如果没有,请告诉。谢谢!


问题答案:

这就是我在Nginx中提供我的Flask应用程序的方式:

使用套接字运行守护进程gunicorn:

  sudo gunicorn app:app --bind unix:/tmp/gunicorn_flask.sock -w 4 -D

相关的nginx配置:

    upstream flask_server {
        # swap the commented lines below to switch between socket and port
        server unix:/tmp/gunicorn_flask.sock fail_timeout=0;
        #server 127.0.0.1:5000 fail_timeout=0;
    }
    server {
        listen 80;
        server_name www.example.com;
        return 301 $scheme://example.com$request_uri;
    }

    server {
        listen 80;
        client_max_body_size 4G;
        server_name example.com;

        keepalive_timeout 5;

        # path for static files
        location  /static {
            alias /path/to/static;
            autoindex on;
            expires max;
        }

        location / {
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header Host $http_host;
            proxy_redirect off;

            if (!-f $request_filename) {
                proxy_pass http://flask_server;
                break;
            }
        }
    }

}


 类似资料:
  • 问题内容: 我一直在为我的应用程序使用nginx / gunicorn和Flask开发新的开发平台。 运维方面,一切正常-我遇到的问题是调试Flask层。当我的代码中有错误时,我只是直接向浏览器返回了500错误,而控制台或日志中没有任何显示。 我已经尝试了许多不同的配置/选项。我想我肯定缺少明显的东西。 我的gunicorn.conf: 乏味的一些Flask代码示例-testserver.py:

  • 问题内容: 我看到人们正在运行Nginx + Gunicorn + Flask之类的设置。 谁能解释在flask前使用Gunicorn有什么好处?为什么不只运行Flask?运行Gunicorn + Flask会消耗更多资源吗?Gunicorn无法响应时,可以重启Flask实例吗? 将nginx放在gunicorn上还有什么目的? 问题答案: 我认为你可能会感到困惑,Flask不是Web服务器,它是

  • 问题内容: 我正在使用Flask的内置开发服务器来开发Flask应用程序。我使用Flask-Script启动它。我想切换为使用Gunicorn作为Web服务器。为此,我需要在Flask-Script和Gunicorn之间编写某种集成代码吗?还是Flask-Script与使用Gunicorn运行应用程序无关? 提前致谢! 到@ sean-lynch的道具。以下是根据他的回答而工作,经过测试的代码。我

  • 问题内容: 这个问题已经在这里有了答案 : 服务Flask应用程序是否需要WSGI服务器和HTTP服务器? (2个答案) 去年关闭。 我看到人们正在运行Nginx + Gunicorn + Flask之类的设置。 有人可以解释在烧瓶前使用Gunicorn有什么好处吗?为什么不只运行Flask?运行Gunicorn + Flask不会消耗更多资源吗?Gunicorn无法响应时可以重启Flask实例吗

  • 亚马逊EC2上的许多Django应用程序部署使用HTTP服务器NGINX和GUnicorn。 我想知道它们实际上是做什么的,为什么两者并行使用。并行运行它们的目的是什么?

  • 我有一个运行在Gunicorn中的Flask SQLAlchmey应用程序连接到PostgreSQL数据库,我很难确定值应该是多少,以及我应该期望多少个数据库连接。 这是我对事物运作方式的理解: Python 3.7中的进程不共享内存 到目前为止这是正确的吗?如果这是正确的,那么对于在Gunicorn中运行的同步烧瓶应用程序: 最大数据库连接数=(工作线程数)*(每个工作线程数)? 在一个work