Apache-2.2

帶有 SSL 的 Apache mod_proxy 不重定向

  • August 14, 2014

我有一個在 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”的擴展程序。這就是重點。禁用此擴展程序後,一切都按預期工作。

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