プロキシされたSSLを含むmod_rewriteでHTTPSを強制する


9

私は、SSL終端ロードバランサーからトラフィックを取得するサーバーを持っていますhttp_x_forwarded_proto

直接HTTPSトラフィックまたは転送されたHTTPSトラフィックのみを許可するmod_rewriteルールが必要です。

私はこれをこれまでに持っています:

RewriteEngine On
RewriteCond %{HTTPS} !=on
RewriteCond %{HTTP:http_x_forwarded_proto} != https
RewriteCond %{HTTP:http_x_forwarded_proto} != HTTPS
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

しかし、私は得ています

RewriteCond:不正なフラグ区切り文字

エラー。

これを機能させるには何を修正する必要がありますか?これは最良のアプローチですか?

回答:


16

問題は "!="の後の空白でした:

作業バージョン:

RewriteEngine On
RewriteCond %{HTTPS} !=on
RewriteCond %{HTTP:X-Forwarded-Proto} !https [NC]
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

トリッキー...


SSLがオフロードされている場合、HTTPS変数が設定されることはありません。とにかく私の状況では、これは最初のテストなしでうまくいきました。
wurtel

1

ロードバランサーでサーバーとの通信時に常にSSLを使用する場合は、常に真になるため、最初のチェックを省略する必要があります。(ロードバランサーでSSLをオフロードしている場合、誰かがSSLを使用してサーバーに直接アクセスできなかった場合を除いて、最初の行は常にtrue X-Forwarded-Protoです。

ELBとWebサーバー間で常にSSLを介して通信しているため、私が使用しているコード:

RewriteEngine On
RewriteCond %{HTTP:X-Forwarded-Proto} !https [NC]
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.