【问题标题】:cherrypy.HTTPRedirect redirects to IP instead of hostname using abs pathcherrypy.HTTPRedirect 使用 abs 路径重定向到 IP 而不是主机名
【发布时间】:2013-12-22 12:58:51
【问题描述】:

我在 nginx 后面运行 CherryPy,需要处理重定向。在我在 127.0.0.1:8080 上运行的开发机器上,这会正确重定向到 127.0.0.1:8080/login。

但是,当通过 nginx 在 cherrypy.mydomain.com(端口 80)上运行时,重定向仍将转到 127.0.0.1:8080/login 而不是 cherrypy.mydomain.com/login。 127.0.0.1:8080 是应用程序的正确本地地址,但是 nginx 中的应用程序服务器设置为侦听端口 80 并将请求通过管道传输到 127.0.0.1:8080 上的本地cherrypy 服务器,但不应直接公开此地址。

我的应用程序中的相关行是:

身份验证失败:

raise cherrypy.HTTPRedirect("/login")

在我的控制器中:

cherrypy.config.update({
    'tools.encode.on': True, 'tools.encode.encoding': 'utf-8',
    'tools.decode.on': True,
    'tools.trailing_slash.on': True,
    'server.socket_host' : '127.0.0.1',
    'server.socket_port' : 8080,
})

我想知道除了套接字主机之外是否还有服务器/主机名的额外cherrypy 配置项,但我很难在文档中找到它。

基本上,我只需要将cherrypy 重定向到cherrypy.mydomain.com 主机名而不是内部IP。

谢谢!

【问题讨论】:

    标签: python-2.7 nginx cherrypy


    【解决方案1】:

    尝试tools.proxy 配置设置:

    'tools.proxy.on': True,
    

    另外你可能需要

    'tools.proxy.local': 'X-Forwarded-Host',
    

    设置为适当的标题。使用 NGINX 时,标头为

    'tools.proxy.local': 'Host',
    

    如果是 Lighttpd,此标头将是合适的:

    'tools.proxy.local': 'X-Host'
    

    【讨论】:

    • 我使用您的'tools.proxy.on': True,'tools.proxy.base': 'cherrypy.mydomain.com', 完成了这项工作。 tools.proxy.local 似乎没有这样做(无论是我的错误还是红鲱鱼,我不确定!感谢您的回答:)
    • 事实上,您的解决方案是完整的。问题是标题不正确(如您所述)。我错误地提到了 Apache 文档(习惯的力量)。 nginx 标头是“主机”。我已经更新了您的答案以反映 nginx 特定的标头。谢谢:)
    • 我收到了一封关于评论的电子邮件通知,但我现在在这里看不到它。不知道有没有被删?无论如何,我的问题是:你为什么要使用 uWSGI 而不是 CherryPy 内置的 WSGI 兼容服务器?
    • 是的,我认为提到 uWSGI 是一个错误的地方。但是既然你提出来了,看看我是怎么想的:stackoverflow.com/questions/20286391/…
    【解决方案2】:

    我无法向 https://stackoverflow.com/a/20730038/1115187 添加评论,但我知道,Lighttpd 发送 X-Host 标头,因此用于 Lighttpd 代理:

    'tools.proxy.local': 'X-Host'
    

    【讨论】:

    • 如何获得 +2 代表:对帖子进行建议编辑。然后你就可以正确评论了。
    • 多田。您现在可以删除它。
    • @Mogsdad,奇怪的东西。我想成为最后一个编辑;)
    • 在审核待定编辑时,可以选择批准(需要更多人来做同样的事情)、拒绝(相同)或批准+改进(一步)。你的编辑很好,但错过了一些可以进一步改进问题的东西,所以我添加了这些。在revision history 中,它显示你编辑了一个修订,然后我做了。如果您能找到更多建议,请继续...我会将其留给一般审核队列!
    猜你喜欢
    • 2019-08-18
    • 2015-09-02
    • 1970-01-01
    • 1970-01-01
    • 2013-07-28
    • 2018-01-05
    • 2012-07-23
    • 2021-04-10
    • 2017-02-20
    相关资源
    最近更新 更多