나는 cherry-webapp을 가지고 있는데, sgin과 함께 nginx 리버스 - 프록시 뒤에 호스트합니다.Cherrypy 응용 프로그램을 https 대신 nginx 뒤에 http 대신 리디렉션
는 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이 열리고 nginx가 ssl 뒤에있을 때로드되지 않습니다.
링크
간단한<a href='/webapp/page'>Page</a>
있습니다 내가 할 수있는 고급로드 https://myaddress.com/webapp/page가 수동으로 열립니다.
브라우저에서 http를 통해 발로 왜 내가 알아낼 수 없습니다: // 대신 HTTPS에 머물고 : //
편집 : 나는이 알아 낸
(가지) 동안 이 게시물에 대해 잊어 버렸습니다.
주 메소드 이름을 index()에서 default()로 변경하면이 문제가 해결되었습니다. 나는 이유를 알 수 없으며 CherryPy 문서에서 아무것도 찾을 수 없습니다.
mysite.com/news로 가면 Cherrypy가 News.index() 대신 News.default()를 반환하고 URI를 변경하지 않습니다.
'Page'이 실제로 브라우저에 들어가는 것을 확인 했습니까? 이 동작을 변경할 수있는 JS 클릭 핸들러가 있습니까? 당신이 사용하는 브라우저는 무엇입니까? – webKnjaZ
이것은 Chrome과 Firefox에서 발생합니다. 나는 다른 사람들을 시험하지 않았다. 링크를 처리하는 자바 스크립트가 없습니다. cherrypy의 메소드 이름을 index()에서 default()로 변경해도 대상이 http로 변경되지 않지만 HTTPRedirect()를 실행하면 https 대신 http : //로 전송된다는 사실을 발견했습니다. // – user1220109
아 .. 알겠습니다. 문제는 cherrypy가 http를 듣고 있으며 nginx에 대해 아무 것도 모른다는 것입니다. HTTPRedirect를 발생시킬 때 상대 URI를 사용하면 사용 가능한 정보를 사용하여 scheme으로 완전한 URL을 생성하려고합니다. 또는'cherrypy.url()'함수를 사용하여 절대 URL을 생성 할 수도 있습니다. – webKnjaZ