如何使用 Apache 限制对特定 URI 的访问

如何使用 Apache 限制对特定 URI 的访问

我让 Apache 在一个 Web 应用前面运行,该 Web 应用的基本 URL 为http://myapp:8080/myApp/,代理到http://example.com/。该 URL 后面有多个资源应受 IP 限制。我在网上找到的解决方案的问题是,它们似乎对所有后续 URI 都进行了全面限制。

例如我有: http://example.com/searchhttp://example.com/secret,,,等等http://example.com/adminhttp://example.com/arbitrary

我希望每个人都能访问/searchURI,但只允许访问指定 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 的情况。为了完整起见,我已将其添加到我的答案中。

相关内容