如何设置 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
如果您信任它,您可以使用它)。就像是:但我承认这对于多个 IP 地址来说有点笨拙。