在我们的服务器www.example.com ,我们使用<Location>指令将stream量代理到后端服务器:
<Location /app1> ProxyPass http://192.168.1.20 </Location>
然后我们添加了一个指向www.example.com的相同IP地址的子域uat.example.com 。 我们希望将其用作客户端的代理来testing正在开发的应用程序。 希望客户可以通过以下方式访问:
http://uat.example.com/app2_uat
现在,如果我们添加一个位置:
<Location /app2_uat> ProxyPass http://192.168.1.30 </Location>
客户端可以同时访问:
http://www.example.com/app2_uat http://uat.example.com/app2_uat
我如何限制位置,只有:
http://uat.example.com/app2_uat
可以访问吗? (即http://www.example.com/app2_uat不应该是可访问的。)
如果您在Apache中使用NameVirtualHost选项,那很容易。 我在这里为另一个用户提供了详细的答案 。 基本的概念是你将为每个子域创build两个不同的VirtualHostconfiguration。 一旦你这样做,你可以自定义这两个子域的configuration,并实现你正在寻找的粒度。
编辑:添加详细信息如何为原始海报设置NameVirtualHost具体问题的详细信息:
一般来说,您需要首先为您想要的端口激活NameVirtualHost 。 我将假设你将使用80端口,所以在你的Apacheconfiguration中find这一行 – 它可能在/etc/apache2/ports.conf – 设置为:
NameVirtualHost *:80
确保您的Apacheconfiguration机会与上面的/etc/apache2/ports.conf相同 – 设置为列表到端口80.应该是这种情况,但在此处添加以供参考:
Listen 80
这是魔术发生的地方。 再次,我只是做基本的基础知识,以适应您的服务器设置。 这是为www.example.com :
<VirtualHost *:80> ServerName www.example.com ServerAlias www.example.com <Location /app1> ProxyPass http://192.168.1.20 </Location> </VirtualHost>
现在为uat.example.com创build一个像这样的新configuration:
<VirtualHost *:80> ServerName uat.example.com ServerAlias uat.example.com <Location /app2_uat> ProxyPass http://192.168.1.30 </Location> </VirtualHost>
通过使用NameVirtualHost您可以设置绑定到一个IP地址的两个单独的域configuration。 再次,请查看我链接到上面的答案更多的细节。