我在我的外围网络上将 Apache2 服务器配置为反向代理。
有很多使用ProxyPas指令配置的VirtualHost。
对于特定的,我想限制对特定 IP 地址的访问。
以下是一个例子:
<VirtualHost 192.168.0.1:80>
ServerAdmin [email protected]
ServerName sub.domain.com
ServerAlias sub.domain.com
ProxyPass / http://internal.domain.com:80/
ProxyPassReverse / http://internal.domain.com:80/
CustomLog /var/log/apache2/my_log combined
HostnameLookups Off
ProxyPreserveHost On
UseCanonicalName Off
ServerSignature On
ProxyRequests Off
</VirtualHost>
我尝试添加这个:
<Proxy *>
Order deny,allow
Deny from all
Allow from 192.168.0.100
</Proxy>
但不起作用,因为反向代理不保留远程 IP 地址。
有没有办法将 IP ACL 与 Apache 配置为反向代理?
谢谢
答案1
您可以使用以下方法完成此操作:反向代理请求标头 ( X-Forwarded-For
)
教程:Apache 2.4 作为反向代理 - LeaseWeb 实验室- 涵盖第二点。
为了mod_proxy
:
LogFormat "%v %{X-Forwarded-For}i %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" pro
xy
SetEnvIf X-Forwarded-For "^.*\..*\..*\..*" forwarded