Apache-2.2
帶有 SSL 的 Apache mod_proxy 不重定向
我有一個在 apache 反向代理後面執行的自定義伺服器。由於自定義伺服器只能處理 HTTP 流量,我正在嘗試使用 apache 將適當的 SSL 包裹在它周圍,並進行某種 HTTP 身份驗證。
所以我啟用了 mod_proxy 和 mod_ssl 並修改了可用的站點/預設 SSL。配置如下:
<Location /server> order deny,allow allow from all AuthType Basic AuthName "Please log in" AuthUserFile /etc/apache2/htpasswd Require valid-user ProxyPass http://192.168.1.102:8181/server ProxyPassReverse http://192.168.1.102:8181/server </Location>
可以通過 ProxyPass 指令中指定的位置從內部網路訪問自定義伺服器。
但是,當從外部訪問代理時,它會顯示登錄提示,並且在成功通過身份驗證後,我會得到一個帶有單詞的空白頁面
The resource can be found at http://192.168.1.102:8181/server
。當我在已通過身份驗證的瀏覽器實例中再次鍵入外部 URL 時,我被正確重定向到伺服器前端。access.log 中充滿了說明我的瀏覽器成功執行 GET 請求的條目,並且代理正在愉快地為 /server 資源提供服務。但是,資源不包含伺服器的前端,而是包含這些文字的空白頁面。
經過一番調查,我很清楚只有Google瀏覽器會顯示這種行為。Safar 和 Firefox 的重定向很好。因為我不認為Google用這樣的“功能”建構了它的瀏覽器而其他人沒有,所以我檢查了我的擴展。並且:我安裝了一個名為“HTTPS Everywhere”的擴展程序。這就是重點。禁用此擴展程序後,一切都按預期工作。