![ローカル SSL 接続によりリダイレクト ループが発生する (Ubuntu アップデート後)](https://rvso.com/image/515667/%E3%83%AD%E3%83%BC%E3%82%AB%E3%83%AB%20SSL%20%E6%8E%A5%E7%B6%9A%E3%81%AB%E3%82%88%E3%82%8A%E3%83%AA%E3%83%80%E3%82%A4%E3%83%AC%E3%82%AF%E3%83%88%20%E3%83%AB%E3%83%BC%E3%83%97%E3%81%8C%E7%99%BA%E7%94%9F%E3%81%99%E3%82%8B%20(Ubuntu%20%E3%82%A2%E3%83%83%E3%83%97%E3%83%87%E3%83%BC%E3%83%88%E5%BE%8C).png)
最近の 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
実行時にエラーや警告が出ないことも確認してください。