Tomcat 过滤器映射无法通过 ProxyPass 工作

标签 tomcat filter web.xml proxypass

我试图通过在 web.xml 文件中使用过滤器来锁定对我的 Tomcat WebApp 的管理部分的访问。

     <filter>
          <filter-name>Remote Address Filter</filter-name>
          <filter-class>org.apache.catalina.filters.RemoteAddrFilter</filter-class>
          <init-param>
            <param-name>allow</param-name>
            <param-value>**my ip address**</param-value>
        </init-param>        
    </filter>
    <filter-mapping>
        <filter-name>Remote Address Filter</filter-name>
        <url-pattern>/admin/*</url-pattern>
    </filter-mapping>

当我通过端口(即 address.com:8081/webapp/admin)时它工作得很好,但是我设置了一个 ProxyPass 以通过 address.com/webapp/admin 访问 webapp。使用 ProxyPass 时,我不知道如何运行过滤器。

我这样做是为了拥有一个没有端口号的干净 URL,然后出于安全原因将对管理 url 结构的访问列入白名单。我也不需要担心通过端口访问,因为端口将通过防火墙关闭。所以我真的只需要通过 ProxyPass 过滤访问一个非常具体的 url 结构(即/webapp/admin/*)。

最佳答案

所以问题出在 ProxyPass 将 IP 地址切换到本地主机。因此,您必须向 web.xml 文件添加额外的代码以授予对原始 IP 的访问权限。

<filter>
    <filter-name>RemoteIpFilter</filter-name>
    <filter-class>org.apache.catalina.filters.RemoteIpFilter</filter-class>
</filter>

<filter-mapping>
    <filter-name>RemoteIpFilter</filter-name>
    <url-pattern>/*</url-pattern>
    <dispatcher>REQUEST</dispatcher>
</filter-mapping>

关于Tomcat 过滤器映射无法通过 ProxyPass 工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53161531/

相关文章:

tomcat - Jars需要的文本文件放在tomcat服务器的什么地方?

hibernate - 使用 JSF、Hibernate 和 Tomcat 在 Web 应用程序上进行授权和身份验证

java - IntelliJ 找不到驱动类

c++ - 编写接受代码输入的键盘驱动程序

java - 使用嵌入式 tomcat 服务器时发出警告

java - 从 web.xml 中的 session 超时中排除页面

java - Tomcat HTTP 基本身份验证和 JAX-WS : Client Generation fails

c# - 过滤单词列表的最快方法

python - 使用 Lambda 函数时出现语法错误

java - 如何将我的 foo.war 的根路径设置为/foo/bar 而不是/foo?