我在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'