Https

Apache 上的永久重定向不起作用

  • May 3, 2016

我在 Windows 2008 上有一個 Apache 2.4 伺服器,它作為反向代理執行得很好。它提供來自在 Glassfish 3.0 上執行的 LifeRay 6.0 安裝的內容。最初,當我們實施 https 永久重定向時,我們無法再登錄 LifeRay,但我認為現在已經解決了。一旦我們登錄到 Liferay,連接是安全的,但是仍然可以將 https 更改為 http,並且頁面將顯示為 http 連接,而不會恢復為 https。此外,與站點的初始連接可以使用 http,如果使用者沒有登錄,站點將繼續使用 http 連接。同樣,我雖然重定向永久會強制所有 http 流量為 https。

Apache 正在向使用者提供 SSL 連接,並且 proxypass 指令在不安全的埠上連接到 LifeRay,這不是問題,因為內部連接是虛擬的,無法從 Internet 訪問。所以,雖然我已經確定了配置,但我必須遺漏一些東西,因為當我認為永久重定向會阻止這種情況時,我似乎能夠使用 http 訪問該站點。ProxyPassReverse 應該是 https 而不是 http?這是配置:

測試伺服器

<VirtualHost *:443>
ServerName test.myexternalserver.org
#
ProxyPreserveHost On
SetEnv proxy-sendchunked
SSLEngine on
ProxyPass / http://192.168.80.196:8080/
ProxyPassReverse / http://192.168.80.196:8080/

</VirtualHost>

<VirtualHost *:80>
ServerName test.myexternalserver.org
ProxyPreserveHost On
SetEnv proxy-sendchunked
Redirect permanent / https://test.myexternalserver.org/
ProxyPass / http://192.168.80.196:8080/
ProxyPassReverse / http://192.168.80.196:8080/

</VirtualHost>

從我今天早上讀到的內容來看,這些模組是以固定的順序執行的。(順序似乎由編譯時模組的程式碼確定。)根據您的問題,聽起來mod_proxy(for ProxyPass& co.) 在mod_alias(for Redirect) 之前執行。

要獲得預期的行為,您可以從埠 80 虛擬主機中刪除對代理的所有引用。我們有可能在生產中看起來非常像這樣的虛擬主機,它們工作得很好。

<VirtualHost *:80>
 ServerName test.myexternalserver.org
 Redirect permanent / https://test.myexternalserver.org/
</VirtualHost>

引用自:https://serverfault.com/questions/506079