Apache-2.2
Apache mod_auth 和 mod_proxy 不能一起工作
我正在嘗試將 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 塊中允許後者,因此永遠不需要身份驗證。