Apache反向代理访问控制


8

我有一个Apache反向代理,目前正在为一些站点进行反向代理。但是我现在将要添加一个只能由某些IP访问的新站点(我们称其为newsite.com)。使用Apache作为反向代理可以做到吗?

我将VirtualHosts用于要代理的站点。我尝试将Allow / Deny指令与Location语句结合使用。例如:

<VirtualHost *:80>  
Servername newsite.com   
<Location http://newsite.com>
Order Deny,Allow
Deny from all
Allow from x.x.x.x
</Location>
<IfModule rewrite_module>
 RewriteRule ^/$ http://newsite.internal.com [proxy]
</IfModule>

我还尝试了在Proxy指令中为站点专门配置允许/拒绝,例如

<Proxy http://newsite.com/>
  Order deny,allow
  Deny from all
  Allow from x.x.x.x
</Proxy>

对于其余的代理站点,我仍然有此定义。

<Proxy *>
  Order deny,allow
  Allow from all
</Proxy>

无论我做什么,似乎都可以从任何地方访问它。这是因为所有其他代理站点的定义。是否有对其应用代理指令的命令。我在*一个之前和之后,以及在VirtualHost语句中都拥有一个newsite。

Answers:


2

您正在使用ServerNameServerAlias来匹配newsite.com。

你应该不是一个反向代理配置的指令中使用:

<Proxy whatever>

您应该使用:

对于Apache 2.2:

<Location />
Order Deny,Allow
Deny from all
Allow from x.x.x.x
</Location>

对于Apache 2.4:

<Location />
   <RequireAny>
       Require             ip x.x.x.x/255.255.255.0
       Require ...
   </RequireAny>
</Location>

完成Authz之后,您只需执行ProxyPass和ProxyPassReverse(针对302,301重定向):

ProxyPass /  http://newsite.com/
ProxyPassReverse /  http://newsite.com/

请记住,您需要将newsite.com添加到/ etc / hosts中,或者dns应该解析URL中的主机。您也可以仅使用IP地址,但应通过以下命令指示保留“ Host:”标头的httpd服务器:

ProxyPreserveHost On

1

今天也有类似的问题;与通配符匹配的完成方式有关,我认为它使用完整的网址:在我的情况下

<Proxy /jira*>
  Order allow,deny
  Deny from all
</Proxy>
ProxyPass /jira https://myhost.com

这是行不通的。该站点可从任何地方访问。我尝试了几件事,找到了一个可行的版本:

<Proxy *jira*>

所以在你的情况下尝试

<Proxy http://newsite.com*>

确保apache与该网址匹配。


0
<VirtualHost *:80>
    Servername newsite.com

    <Proxy *>
            Order Deny,Allow
            Deny from all
            Allow from x.x.x.x
    </Proxy>

    ProxyPass /  http://newsite.com/
    ProxyPassReverse /  http://newsite.com/

</VirtualHost>

1
这是做什么的,为什么要这样做呢?
sysadmin1138

那是一个反向代理,只能由某个IP访问(通过将x替换为Allow from xxxx来定义)。
dr0i
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.