问题描述
我正在测试Gunicorn作为uWsgi的替代产品。在Gunicorn实例的前面设置了Nginx反向代理。不使用uWsgi的后果是我不得不诉诸于使用Nginx的proxy_pass
而不是uwsgi_pass
。使用uwsgi_pass
,我可以使用uwsgi_param
来覆盖PATH_INFO
和SCRIPT_NAME
Wsgi变量。 proxy_pass
没有等效的指令。您如何为兼容Wsgi的应用程序服务器(例如Gunicorn)的proxy_pass
设置这些Wsgi变量?
解决方法
Gunicorn documentation建议您可以通过HTTP标头指定SCRIPT_NAME
,而无需进一步说明。深入研究源代码后发现,该代码接受了一个实际上名为SCRIPT_NAME
的非标准标头。以下内容可用于为Gunicorn设置SCRIPT_NAME
:
proxy_set_header SCRIPT_NAME /myapp;
PATH_INFO
无法设置。但是,在我的情况下,无需为Gunicorn设置PATH_INFO
,因为它会自动从SCRIPT_NAME
中剥离PATH_INFO
前缀。使用uWSGI,我不得不覆盖PATH_INFO
来剥离SCRIPT_NAME
前缀。