我在nginx后面代理了一个金字塔应用程序,我试图在request.environ
中设置SCRIPT_NAME
。在
我试过:
- 在shell中导出它
pserve
正在运行 - 在shell中导出它
nginx
正在运行 - 在金字塔配置文件中定义它
- 在
serve_forever()
之前手动将其设置为gevent.wsgi.WSGIServer.environ
我在上一步中定义的非标准值是可用的,但是SCRIPT_NAME
总是空的,这似乎表明它正在从其他地方被覆盖。在
我怎么设置?在
Tags:
看看休息室.vhm. 在
它通常能解决我所有的虚拟主机问题。(子路径、虚拟根目录等)。最大的优势休息室.vhm你的金字塔应用程序可以完全不知道外部url和路径。但是你必须小心,你使用request.route\u网址以及为你的站点/应用程序生成url时使用的其他方法(但无论如何,这应该是一个很好的实践)。在
https://github.com/repoze/repoze.vhm
SCRIPT_NAME
由WSGI服务器根据每个请求设置。如果您的服务器没有钩子来设置它(waitress有一个url_prefix=...
设置),那么您可以很容易地在中间件堆栈的停止处添加一个中间件来为您设置它。除了编写自己的自定义中间件之外,还可以使用粘贴前缀中间件,它允许您附加到SCRIPT_NAME
。它还支持通过转换X-Forwarded-Proto
头来重写wsgi.url_scheme
,这将有助于https。在使用中间件的最佳方法是将其添加到ini文件中。服务员文档中有一些很好的例子。为了更清楚起见,我将复制下面的一个。[1]
http://docs.pylonsproject.org/projects/waitress/en/latest/#using-behind-a-reverse-proxy
相关问题 更多 >
编程相关推荐