ローカル SSL 接続によりリダイレクト ループが発生する (Ubuntu アップデート後)

ローカル SSL 接続によりリダイレクト ループが発生する (Ubuntu アップデート後)

最近の Ubuntu のアップデートにより、私のローカル Web サイトは SSL 経由でページを提供しなくなりました。たとえば、私の .htaccess ファイルは、/sign-in が常に HTTPS 経由で提供されるようにしようとします。

RewriteEngine On
RewriteCond %{HTTPS} off
RewriteCond %{REQUEST_URI} /sign-in
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [L,QSA,R=301]

しかし、ドメインsite2-localの/sign-inにリクエストすると、次のような「ページが正しくリダイレ​​クトされていません」というエラーが表示されます。/var/log/apache2/error.log

[Tue Jun 08 12:20:57 2010] [info] [client 127.0.1.1] Connection to child 0 established (server site1-local:443)
[Tue Jun 08 12:20:57 2010] [info] Seeding PRNG with 656 bytes of entropy
[Tue Jun 08 12:20:57 2010] [info] Initial (No.1) HTTPS request received for child 0 (server site2-local:443)
[Tue Jun 08 12:20:57 2010] [info] Subsequent (No.2) HTTPS request received for child 0 (server site2-local:443)
[Tue Jun 08 12:20:57 2010] [info] Subsequent (No.3) HTTPS request received for child 0 (server site2-local:443)
[Tue Jun 08 12:20:57 2010] [info] Subsequent (No.4) HTTPS request received for child 0 (server site2-local:443)
[Tue Jun 08 12:20:57 2010] [info] Subsequent (No.5) HTTPS request received for child 0 (server site2-local:443)
[Tue Jun 08 12:20:57 2010] [info] Subsequent (No.6) HTTPS request received for child 0 (server site2-local:443)
[Tue Jun 08 12:20:57 2010] [info] Subsequent (No.7) HTTPS request received for child 0 (server site2-local:443)
[Tue Jun 08 12:20:57 2010] [info] Subsequent (No.8) HTTPS request received for child 0 (server site2-local:443)
[Tue Jun 08 12:20:57 2010] [info] Subsequent (No.9) HTTPS request received for child 0 (server site2-local:443)
[Tue Jun 08 12:20:57 2010] [info] Subsequent (No.10) HTTPS request received for child 0 (server site2-local:443)
[Tue Jun 08 12:21:12 2010] [info] [client 127.0.1.1] (70007)The timeout specified has expired: SSL input filter read failed.
[Tue Jun 08 12:21:12 2010] [info] [client 127.0.1.1] Connection closed to child 0 with standard shutdown (server site2-local:443)

site1-local (証明書を共有するマシン上の別のサイト) への接続がありますが、理解できません。

この問題の原因が何なのか知っている人はいますか?

答え1

何が問題の原因なのかはわかりませんが、しばらく前に私自身もこの問題に遭遇し、別の変数を使用して https リクエストを検出するという回避策を見つけました。

%{SERVER_PORT}またはのいずれかを使用できます%{SERVER_PROTOCOL}

大文字小文字の問題である可能性もあります。 %{HTTPS}「off」ではなく「Off」である可能性もあります。

私の SSL VirtualHosts には、私SetEnv HTTPS onが抱えていた別の問題に対する解決策がありますが、あなたの問題も解決するはずです。この解決策が必要になった根本的な原因は、変数が%{HTTPS}正しく設定されていなかったことです。変数%{HTTPS}が設定されていない場合は、手動で設定すると問題が解決するはずです。

答え2

SSL がオンになっていない場合、HTTPS が常に設定されているとは限らないと思います。そのため、ポートをテストすることは確かに良い解決策です (%{SERVER_PORT})

答え3

まず、Apache が https ポートでリッスンしているかどうかを確認しましょう。 lsof -i:443出力が見つからない場合、問題は書き換えルールではなく SSL モジュールにあります。特に、アップグレード前には同じルールが正しく機能していたとおっしゃっているためです。

apache2ctl -t実行時にエラーや警告が出ないことも確認してください。

関連情報