如何使用 Apache ajp 反向代理限制特定 URL

如何使用 Apache ajp 反向代理限制特定 URL

我正在使用Apache Reverse Proxy,以下是一些Apache Virtual Host配置:

    ProxyRequests Off
    <Proxy *>
            AddDefaultCharset off
            Order deny,allow
            Allow from all
    </Proxy>
    ProxyVia On
    ProxyRequests Off
    ProxyPreserveHost On
    proxyPass /        ajp://127.0.0.1:8009/

现在我想以某种方式进行限制request urlhttp://example.com/admin/tools使其IP address仅允许特定用户访问。我该如何实现这一点?

编辑:

根据上述要求这个答案工作正常,假设我想允许admin从一个或两个访问 URL IP's,其余的IP's我想重定向到index页面而不是显示forbidden error,我该如何实现呢?

答案1

你使用的 Apache 版本是多少?一种基于 URL 限制资源访问的方法是使用

例如:

<Location /admin/tools>
  Order Deny,Allow
  Deny from all
  Allow from 192.168.1.34
</Location>

答案2

根据上述要求,这个答案工作正常,假设我想允许从一个或两个 IP 访问管理 URL,其余 IP 我想重定向到索引页而不是显示禁止错误,我该如何得到这个?

扩展krist-van-besien 的回答,你可以借助ErrorDocumentfor来实现403 禁止像这样:

<Location /admin/tools>
    Order Deny,Allow
    Deny from all
    Allow from 192.168.1.34
    ErrorDocument 403 /index.php
</Location>

请注意,用户应该有权限查看您要将其重定向到的页面。有关更多信息,您可以查看此问题:允许被屏蔽的 IP 查看 403 错误文档

进一步阅读:

答案3

扩展此场景以应用于 RESTful Web 服务端点,而不是从网页调用端点。

有没有办法代理来自本地服务器网页的请求并将其转发到 Web 服务地址,同时允许本地内部网络请求(开发人员)访问 Web 服务端点,但仍然限制直接外部 WS 端点请求?

例如,如果 Web 服务在 Tomcat(端口 8080)上运行,并且我们mod_proxy在 Web 页面服务调用中使用端口 80 上的 Web 页面重定向 apache 请求 -> tomcat:8080/webservice。

<Location /admin/tools>
    Order Deny,Allow
    Deny from all
    Allow from localhost
    Allow from 127.0.0.1
    Allow from *local.domain.com
</Location>
ProxyPass        /admin/tools http://localhost:8080/admin/tools
ProxyPassReverse /admin/tools http://localhost:8080/admin/tools

当我尝试这个时,它会锁定整个 WS 端点访问,包括进入代理传递端点的网页请求。

相关内容