.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
実行時にエラーや警告が出ないことも確認してください。