Java tomcat端口URL限制

Java tomcat端口URL限制,java,security,url,tomcat,port,Java,Security,Url,Tomcat,Port,我正在尝试配置tomcat,以便我的应用程序可以通过两个不同的端口访问,比如8080和8980,但某些URL只能通过8980访问 原因是web层使用8080,我不希望某些URL向外界公开。我也不想配置web服务器来限制这一点,因为它会在应用程序和web层之间产生耦合 我知道我可以配置两个连接器,然后根据端口以编程方式阻止对URL的调用,但是: 我宁愿不要硬编码端口,因为它可能会在 server.xml的未来 我希望在各种场合都有同样的行为 组织中的应用程序,并且不希望所有开发人员 这需要单独实施

我正在尝试配置tomcat,以便我的应用程序可以通过两个不同的端口访问,比如8080和8980,但某些URL只能通过8980访问

原因是web层使用8080,我不希望某些URL向外界公开。我也不想配置web服务器来限制这一点,因为它会在应用程序和web层之间产生耦合

我知道我可以配置两个连接器,然后根据端口以编程方式阻止对URL的调用,但是:

  • 我宁愿不要硬编码端口,因为它可能会在 server.xml的未来
  • 我希望在各种场合都有同样的行为 组织中的应用程序,并且不希望所有开发人员 这需要单独实施
  • 是否有一种配置,可以从server.xml中定义的连接器中排除某些URL模式


    提前谢谢

    在tomcat中,您可以使用不同的连接器端口和引擎设置定义多个服务,但一个应用程序只能由一个引擎提供服务,因此您必须多次部署应用程序

    对于像您这样的用例,tomcat太有限了,但是这个功能通常被推迟到反向代理,例如apache或nginx

    例如,您可以让tomcat在端口8980上运行,并将apache配置为在端口8080上反向代理所有/app调用,但内部调用除外:

    Listen 8080
    
    <VirtualHost *:8080>
       ProxyPass /app/internal !
       ProxyPass /app http://localhost:8980/app
    </VirtualHost>
    
    听8080
    ProxyPass/应用程序/内部!
    ProxyPass/apphttp://localhost:8980/app
    

    请参见

    只需在Tomcat前面放置一个反向HTTP代理(例如,带有AJP代理的Apache HTTP服务器),并在那里配置访问策略。