cherrypy.HTTPRedirect使用abspathredirect到IP而不是主机名

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

但是,通过cherrypy.mydomain.com(端口80)上的nginx运行时,redirect仍然是127.0.0.1:8080/login而不是cherrypy.mydomain.com/login。 127.0.0.1:8080是应用程序的正确本地地址,但nginx中的应用程序服务器被设置为侦听端口80,并向127.0.0.1:8080上的本地cherrypy服务器发送pipe道请求,但不应直接公开此信息。

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

validation失败:

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, }) 

我想知道是否有一个额外的樱桃configuration项目的服务器/主机名称,除了套接字主机,但我努力在文档中find它。

本质上,我需要的只是cherrypyredirect到cherrypy.mydomain.com主机名而不是内部IP。

谢谢!

尝试tools.proxy配置设置:

 'tools.proxy.on': True, 

另外你可能需要

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

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

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

Lighttpd的情况下,这个头将是适当的:

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

我无法添加评论到https://stackoverflow.com/a/20730038/1115187 ,但我知道, Lighttpd发送X-Host标题,所以对于Lighttpd代理使用:

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