Apache-2.2
基本身份驗證 apache 2.2 繞過 IP
如何設置 apache 2.2 的基本身份驗證以繞過 IP?我已經關注了這個 wiki http://wiki.apache.org/httpd/BypassAuthenticationOrAuthorizationRequirements,但總是詢問密碼,也列出了 IP:
<Directory /var/www/html/mydir> AuthName "Private" AuthType Basic AuthUserFile "/etc/httpd/htpasswd" Require valid-user Order allow,deny Allow from 111.111.111.111 222.222.222.222 Satisfy any </Directory>
我在haproxy下,但我設置了IP轉發,我已經這樣設置
LogFormat
了:LogFormat "%{X-Forwarded-For}i %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
access_log 是:
111.111.111.111 - - [25/Oct/2016:12:35:41 +0200] "GET /index.html HTTP/1.1" 401 487 "-" "Mozilla/5.0 (X11; Linux armv7l; rv:38.0) Gecko/20100101 Firefox/38.0 Iceweasel/38.7.0"
你的配置很好,很標準。如果您正在使用,那麼所有請求
haproxy
的源 IP 地址就是它本身,並且檢查指令的是這個 IP 地址,而不是標頭的內容。haproxy``allow from``X-Forwarded-For
有幾種方法可以解決這個問題。使用 Apache v2.2,您可以使用第 3 方模組,例如 mod_custom_headers(http://support.en.ctx.org.cn/ctx109555.citrix抱歉,原來的 citrix 頁面似乎已移動或被刪除)或可能
mod_rpaf
(我’以前沒有使用過它,所以不能確定它是否allow from
能正常工作)。這些模組修改 Apache 保存的有關請求的數據,以便源 IP 成為您的代理設置的命名標頭中的值(例如
X-Forwarded-For
)。或者,您可以升級到 Apache v2.4 並使用 mod_remoteip,它做同樣的事情。
請注意,還有一個 Apache 配置解決方案,您可以通過該解決方案在 上設置自己的標頭
haproxy
(或者X-Forwarded-For
如果您信任它,您可以使用它)。就像是:SetEnvIf X-Forwarded-For ^111.111.111.111 access_granted_by_ip SetEnvIf X-Forwarded-For ^222.222.222.222 access_granted_by_ip Order allow,deny Allow from env=access_granted_by_ip
但我承認這對於多個 IP 地址來說有點笨拙。