2016-12-31 6 views
0

나는 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를 변경하지 않습니다.

+0

'Page'이 실제로 브라우저에 들어가는 것을 확인 했습니까? 이 동작을 변경할 수있는 JS 클릭 핸들러가 있습니까? 당신이 사용하는 브라우저는 무엇입니까? – webKnjaZ

+0

이것은 Chrome과 Firefox에서 발생합니다. 나는 다른 사람들을 시험하지 않았다. 링크를 처리하는 자바 스크립트가 없습니다. cherrypy의 메소드 이름을 index()에서 default()로 변경해도 대상이 http로 변경되지 않지만 HTTPRedirect()를 실행하면 https 대신 http : //로 전송된다는 사실을 발견했습니다. // – user1220109

+0

아 .. 알겠습니다. 문제는 cherrypy가 http를 듣고 있으며 nginx에 대해 아무 것도 모른다는 것입니다. HTTPRedirect를 발생시킬 때 상대 URI를 사용하면 사용 가능한 정보를 사용하여 scheme으로 완전한 URL을 생성하려고합니다. 또는'cherrypy.url()'함수를 사용하여 절대 URL을 생성 할 수도 있습니다. – webKnjaZ

답변

1

역방향 프록시 도구를 활성화 하시겠습니까?

당신은 당신의 설정 파일에 추가하여 수행 할 수 있습니다 :

tool.proxy.on = True

또는 장식으로합니다. 해당 도구의 기능

@cherrypy.tools.proxy

일부는 http에서 https에 프로토콜을 조정하여 응용 프로그램 기반을 조정하는 것입니다.

+0

도움이 될지 잘 모르겠습니다. 테스트가 필요합니다. 과거에 올바른 FQDN을 제공하지 못했습니다. – webKnjaZ