我正在尝试配置tomcat,以便可以通过两个不同的端口访问我的应用程序,例如8080和8980,但某些URL只能通过8980访问。
原因是Web层使用8080,我不希望某些URL暴露给外部世界。我也不想配置Web服务器来限制它,因为它在应用程序和Web层之间创建了耦合。
据我所知,我可以配置两个连接器,然后以编程方式阻止基于端口的URL调用,但是:
我是否可以从server.xml中定义的连接器中排除某些URL模式?
提前致谢!
答案 0 :(得分:0)
在tomcat中,您可以使用不同的连接器端口和引擎设置定义多个服务,但应用程序只能由一个引擎提供服务,因此您必须多次部署应用程序。
对于像你这样的用例,tomcat太有限了,但是这个功能通常被推迟到反向代理,例如apache或nginx。
例如,您可以让您的tomcat在端口8980上运行,并配置apache以反转代理端口8080上的所有/ app调用,除了内部:
Listen 8080
<VirtualHost *:8080>
ProxyPass /app/internal !
ProxyPass /app http://localhost:8980/app
</VirtualHost>
请参阅http://httpd.apache.org/docs/2.2/mod/mod_proxy.html#proxypass