Elastic Beanstalk ロード バランサーの背後にいるときに、IIS の URL 書き換えモジュールを使用して、ユーザーに ssl の使用を強制するにはどうすればよいですか?
15876 次
4 に答える
42
これは、いくつかの理由から、思ったよりも困難です。1 つ目は、ロード バランサーが ssl を処理しているため、ロード バランサーから渡されたリクエストが決して ssl を使用していないことです。従来の書き換えルールを使用すると、リダイレクトの無限ループが発生します。対処すべきもう 1 つの問題は、AWS ヘルスチェックがリダイレクト レスポンスを受信すると失敗することです。
- ソリューションの最初のステップは、healthcheck.html ページを作成し、ルート ディレクトリに設定することです。内容は何でも構いません。
- ヘルスチェックに healthcheck.html ファイルを使用するようにロードバランサーを設定します。
以下の書き換えルールを web.config の
<system.webServer><rewrite><rules>
セクションに追加します。<rule name="Force Https" stopProcessing="true"> <match url="healthcheck.html" negate="true" /> <conditions> <add input="{HTTP_X_FORWARDED_PROTO}" pattern="https" negate="true" /> </conditions> <action type="Redirect" url="https://{HTTP_HOST}{REQUEST_URI}" redirectType="Permanent" /> </rule>
ルールの一致は、ヘルスチェック ファイル以外のものであることに注意してください。これにより、ロード バランサーのヘルス チェックが成功し、サーバーが誤って負荷から除外されることがなくなります。
ロード バランサーはヘッダーで X-Forwarded-Proto 値を渡します。これにより、リクエストが https 経由で行われたかどうかがわかります。その値が https でない場合にルールがトリガーされ、https を使用して永続的なリダイレクトが返されます。
于 2013-11-05T14:52:59.313 に答える