因此,我有一个使用 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