我有一個cherrypy webapp,它託管在一個帶有ssl的nginx反向代理之後。Cherrypy應用程序重定向到http而不是https後面nginx
nginx的位置被設置爲這樣的:當我加載了https://myaddress.com/webapp
location /webapp {
proxy_pass http://127.0.0.1:8642;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
一切正常。頁面加載正常。
但是當我點擊任何鏈接時,它會打開http://myaddress.com/webapp/page,它不會在使用ssl後面加載nginx時加載。
的鏈接是一個簡單的
<a href='/webapp/page'>Page</a>
我可以手動打開https://myaddress.com/webapp/page它加載的罰款。
我想不通爲什麼瀏覽器在踢它到http://,而不是停留在https://開頭
編輯:
我想通了這一點(種)一段時間之前和忘了這篇文章。
將主要方法名稱從index()更改爲default()已修復此問題。我無法弄清楚爲什麼,我在CherryPy文檔中找不到任何內容。
因此,當去mysite.com/news Cherrypy現在返回News.default()而不是News.index(),並且這不會更改URI。
你有沒有檢查'Page'是否真的進入瀏覽器?你有任何JS點擊處理程序,這可能會改變這種行爲?你使用的是什麼瀏覽器? – webKnjaZ
這發生在Chrome和Firefox上。我沒有測試過其他人。 沒有JavaScript處理鏈接。 我發現將cherrypy中的方法名稱從index()更改爲default()並不會將目標更改爲http,但是當我執行HTTPRedirect()時,會將其發送到http://而不是https: // – user1220109
哦..我明白了。問題是cherrypy正在聽HTTP,並不知道有關nginx的任何信息。如果在提升'HTTPRedirect'時使用相對URI,它會嘗試使用可用信息構建完整的URL。或者,您可以使用'cherrypy.url()'函數自己生成一個絕對URL。 – webKnjaZ