我需要绕过一些IP的基本身份验证,Apache是2.4并且落后于haproxy,我已将其插入到文档根部分:
<Directory /path/to/webroot>
AuthUserFile /etc/apache2/.htpasswd
AuthType Basic
AuthName "Restricted Content"
<Limit GET>
Require valid-user
</Limit>
Require ip xxx.xxx.xxx.xxx
Satisfy any
</Directory>
但是不起作用,apache位于代理后面,它可能不起作用,因为到达apache的ip是代理而不是客户端
答案1
启用并配置mod_remoteip。您的代理将像X-Forwarded-For
HTTP 请求一样在标头中设置原始远程 IP 地址。将其传递给RemoteIpHeader
放置在外部的指令<Directory>
。
%a
如果 mod_remoteip 工作正常,则可以使用in看到代理传递的原始远程地址LogFormat
。您应该首先检查这一点。
Apache 2.4Satisfy
指令是已弃用. 并且您最好不要通过添加不必要的内容来使授权条件复杂化<Limit>
。
尝试使用以下配置:
RemoteIPHeader X-Forwarded-For
<Directory /path/to/webroot>
AuthUserFile /etc/apache2/.htpasswd
AuthType Basic
AuthName "Restricted Content"
Require valid-user
Require ip xxx.xxx.xxx.xxx
</Directory>