nginx uwsgi flask 将目录重写为应用程序内的基本目录

nginx uwsgi flask 将目录重写为应用程序内的基本目录

因此,我有一个使用 Nginx 上的 uWSGI 运行的 flask 应用程序。Nginx 设置为在位置 /app 调用我的应用程序。因此,在我的 flask 应用程序中,当我将 url 映射到函数时,我必须考虑 /app 部分。有没有办法重写 nginx 文件或 uwsgi config.xml 文件,让应用程序认为它是从 / 目录运行的?有什么副作用吗?

举个例子:

这一页http://mysite.com/app/链接到我的 index.py 模块

我的index.py模块使用Flask,所以路线映射如下:

@app.route('/app/')
    def hello_world():
        return 'Hello World!'

我想知道我是否可以更改配置文件,以便我可以写:

@app.route('/')
   def hello_world():
       return 'Hello World!'

反而?

答案1

使用以下命令将你的应用挂载到 uWSGI 的子目录中

--mount /app=myfile.py --callable app --manage-script-name

它应该不需要修改代码或使用 wsgi 中间件就可以工作

答案2

我通过以下 nginx 配置使其工作:

location ~ ^/app {
    charset utf-8;
    include uwsgi_params;
    uwsgi_pass uwsgicluster;
    uwsgi_param SCRIPT_NAME /app;
    uwsgi_modifier1 30;
}

并以@roberto 的身份使用 --mount 和 --mange-script-name 运行 uwsgi。例如。

uwsgi --socket 0.0.0.0:3031\ 
            --pythonpath  . \
            --mount /app=./app.py \ 
            --manage-script-name \
            --callable app

相关内容