Apache2:如何使用ProxyPass限制对特定IP的访问?

我的外围networking上configuration了一个Apache2服务器作为反向代理服务器。

有很多使用ProxyPas指令configuration的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地址。

有一种方法可以使用configuration为反向代理的Apache的IP ACL?

谢谢

您可以使用:反向代理请求头( X-Forwarded-For

  • mod_proxy – Apache HTTP Server版本2.4
  • mod_remoteip – Apache HTTP Server版本2.5

教程: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