在最近的 Ubuntu 更新之後,我的本地網站不再透過 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}
很可能是“關閉”而不是“關閉”。
在我的 SSL VirtualHosts 中,我有SetEnv HTTPS on
一個解決方案來解決我遇到的另一個問題,但也應該解決您的問題。需要此解決方案的最終原因是%{HTTPS}
變數設定不正確。如果%{HTTPS}
未設定變量,手動設定應該可以解決問題。
答案2
我認為在SSL未開啟的情況下,HTTPS可能不會總是被設定。因此測試連接埠確實是一個很好的解決方案(%{SERVER_PORT})
答案3
讓我們先確保 apache 是否正在偵聽 https 連接埠:
lsof -i:443
如果您發現沒有輸出,那麼問題出在 SSL 模組而不是重寫規則上,特別是因為您說相同的規則在升級之前運作正常。
另請驗證運行時apache2ctl -t
是否沒有出現錯誤或警告