Apache-2.2

Apache mod_auth 和 mod_proxy 不能一起工作

  • December 13, 2012

我正在嘗試將 apache 設置為在埠 8080 上執行的 Web 後端的身份驗證前端。後端沒有身份驗證,所以如果curl localhost:8080你獲得了網站。埠 8080 被外部阻止,所以我想要的是讓 apache 對從埠 80 訪問的使用者進行身份驗證,然後代理到埠 8080。

我相信這應該是可能的,根據stackoverflow上的這篇文章: https ://stackoverflow.com/questions/724599/setting-up-an-apache-proxy-with-authentication

我試圖複製這個,但是,我無法讓 Apache 進行身份驗證;它只是直接傳遞給代理。這是虛擬主機配置:

<VirtualHost *:80>

 ServerName external.mywebsite.com

 <Location "/">
         Satisfy any
         require valid-user
         order allow,deny
         Allow from all
 </Location>


 ProxyRequests off
 ProxyPreserveHost on

 ProxyPass / http://localhost:8080/
 ProxyPassReverse / http://localhost:8080/

 <Proxy *>
         Order deny,allow
         Allow from all
         AuthType Basic
         AuthName "Private"
         AuthBasicProvider file
         AuthUserFile /path/to/htpasswd
         Require valid-user
 </Proxy>
</VirtualHost>

這與從後端瀏覽到 external.mydomain.com 輸出一樣有效。所以代理本身正在工作,但好像 Auth 指令被忽略了。我還嘗試將 Auth 指令移動到<location>塊中,但這具有完全相同的效果。

我正在使用在 Ubuntu 12.04 上執行的 Apache2 v2.2.22。有什麼建議麼?

Satisfy any正如它所說的那樣:它允許基於身份驗證IP 訪問控制的訪問。

由於您在 Proxy 塊中允許前者,而在 Location 塊中允許後者,因此永遠不需要身份驗證。

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