2016-12-31 6 views
0

私はsginのnginxリバースプロキシの後ろにホストしているcherrypy webappを持っています。Cherrypyアプリケーションは、nginxの背後にあるhttpsではなく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で読み込まれません。

のリンクは、私は、手動で微ロードするhttps://myaddress.com/webapp/pageを開くことができ、簡単な

<a href='/webapp/page'>Page</a> 

です。

ブラウザがHTTPにそれを上に蹴っている理由私は理解することはできません

://ではなくHTTPSに滞在://

編集:私はこれを考え出し

(一種の)しばらくこの投稿を忘れてしまった。

メインメソッド名をindex()からdefault()に変更すると、これが修正されました。私は理由を理解することができず、CherryPyのドキュメントでは何も見つけられません。

mysite.com/newsに行くときCherrypyはNews.index()の代わりにNews.default()を返します。これはURIを変更しません。

+0

Page」が実際にブラウザに表示されることを確認しましたか?この動作を変更するJSクリックハンドラがありますか?あなたが使っているブラウザは何ですか? – webKnjaZ

+0

これはChromeとFirefoxで発生します。私は他の人をテストしていない。 リンクを処理するjavascriptはありません。 cherrypyのメソッド名をindex()からdefault()に変更してもターゲットがhttpに変更されないことがわかりましたが、HTTPRedirect()を実行するとhttps: // – user1220109

+0

ああ、そうです。問題は、cherrypyがhttpを聞いていて、nginxについて何も知らないということです。 'HTTPRedirect'を上げるときに相対URIを使うと、利用可能な情報を使ってスキームで完全なURLを構築しようとします。また、 'cherrypy.url()'関数を使って絶対URLを生成することもできます。 – webKnjaZ

答えて

1

リバースプロキシツールを有効にしていますか?

あなたの設定ファイルに追加することによって、そうすることができます。

tool.proxy.on = True

または飾ることもできます。

@cherrypy.tools.proxy

そのツールの機能の一部は、httpからhttpsするプロトコルを調整することにより、アプリケーションベースを調整することです。

+0

私はそれが役立つかどうかは分かりません。テストが必要です。私は過去に正しいFQDNを教えてくれませんでした。 – webKnjaZ

関連する問題