我在nginx後面運行CherryPy並需要處理重定向。在我的開發機器上運行127.0.0.1:8080,這將正確重定向到127.0.0.1:8080/login。cherrypy.HTTPRedirect使用abs路徑重定向到IP而不是主機名
但是,當通過cherrypy.mydomain.com(端口80)上的nginx運行時,重定向仍將轉到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配置項服務器/主機名稱以及套接字主機,但我正努力在Docs中找到它。
本質上,我需要的僅僅是cherrypy重定向到cherrypy.mydomain.com主機名而不是內部IP。
謝謝!
我使用你的''tools.proxy.on'來實現這個工作:True,'與'tools.proxy.base'結合使用:'cherrypy.mydomain.com','。 tools.proxy.local似乎沒有做到這一點(無論是由我的錯誤還是紅鯡魚,我不知道!謝謝你的回答:) –
事實上,你的解決方案是完整的。問題是標題不正確(正如你所提到的)。我錯誤地提到了Apache文檔(習慣的力量)。 nginx頭部是「主機」。我已經更新了您的答案以反映nginx特定的標題。謝謝:) –
我收到了關於評論的電子郵件通知,但現在我無法在此處看到它。不知道它是否被刪除?無論如何,我的問題是:爲什麼你會使用uWSGI而不是CherryPy的內置WSGI兼容服務器? –