Apache反向代理访问控制

我有一个Apache反向代理,目前反向代理几个网站。 不过,我现在要添加一个新的网站(让我们称之为newsite.com)应该只能由某些IP访问。 这是可以使用Apache作为反向代理吗?

我使用VirtualHosts为正在被代理的网站。 我已经尝试使用允许/拒绝指令结合位置语句。 例如:

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

例如,我也尝试在Proxy指令中特别为站点configuration允许/拒绝

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

但是,对于其他代理站点,我仍然有这个定义。

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

无论我做什么,似乎都可以从任何地方访问。 这是因为所有其他代理站点的定义。 有没有一个命令,它适用于代理指令。 我在*之前和之后都有一个newsite,也在VirtualHost声明中。

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

您不应该使用指令的反向代理configuration:

 <Proxy whatever> 

你应该使用:

对于Apache 2.2:

 <Location /> Order Deny,Allow Deny from all Allow from xxxx </Location> 

对于Apache 2.4:

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

完成Authz之后,您只需执行ProxyPass和ProxyPassReverse(用于302,301redirect):

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

请记住,这需要将newsite.com添加到/ etc / hosts中,否则dns应该parsingurl中的主机。 您也可以只使用IP地址,但您应该指示保留“主机:”标题的httpd服务器:

 ProxyPreserveHost On 

今天有类似的问题; 与通配符匹配是如何完成的,我认为它使用完整的URL:在我的情况下,我有

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

这不起作用。 网站可以从任何地方访问。 我尝试了一些事情,发现一个工作版本:

 <Proxy *jira*> 

所以在你的情况下尝试

 <Proxy http://newsite.com*> 

确保Apache匹配该url。

 <VirtualHost *:80> Servername newsite.com <Proxy *> Order Deny,Allow Deny from all Allow from xxxx </Proxy> ProxyPass / http://newsite.com/ ProxyPassReverse / http://newsite.com/ </VirtualHost>