我让 Apache 在一个 Web 应用前面运行,该 Web 应用的基本 URL 为http://myapp:8080/myApp/
,代理到http://example.com/
。该 URL 后面有多个资源应受 IP 限制。我在网上找到的解决方案的问题是,它们似乎对所有后续 URI 都进行了全面限制。
例如我有:
http://example.com/search
和http://example.com/secret
,,,等等http://example.com/admin
。http://example.com/arbitrary
我希望每个人都能访问/search
URI,但只允许访问指定 IP 的所有其他 URI 路径。我面临的问题是尝试拒绝访问其他URI,无论它们是什么。
答案1
事实证明我把问题复杂化了。
这按我想要的方式工作:
<VirtualHost *:80>
ProxyPass /myApp http://localhost:8080/myApp
ProxyPassReverse /myApp http://localhost:8080/myApp
<Location /myApp>
deny from all
Order deny,allow
allow from ip1 ip2 ip3
</Location>
<Location /myApp/search>
Order allow,deny
allow from all
</Location>
</VirtualHost>
默认情况下,这将禁止访问 下的每个位置/myApp
,但允许访问/myApp/search
。现在只是允许来自特定 IP 的情况。为了完整起见,我已将其添加到我的答案中。