“如何用嵌入式Tomcat完成此操作?”
这可能是可能的,但不推荐。那会导致你太多的压力值得。
而是使用前缀“/ api/v1 /”,并将所有宁静的端点放在该路径后面。
然后可以通过弹簧安全(允许CORS等)特定管理“/ api”路径。
“v1”路径允许您为客户版本化api,或者您可能有日期依赖业务逻辑的情况。
“如何使用Spring Boot应用程序在其中运行的托管Tomcat完成此任务?”
我明白你为什么要这么做;我有“人”(?)要求我做类似的奇怪的事情/
我推荐在这种情况下用于宁静端点的相同“/ api”方法,但是阻止所有对Tomcat的静态内容请求。 Spring Security可以配置为只能通过tomcat请求“api”下的宁静端点,并阻止任何对Tomcat的静态内容请求。
将Nginx配置为与tomcat位于同一台服务器上,并将NgineX docbase设置为战争扩展后的静态内容。
不要在“META-INF”或“WEB-INF”内的任何地方放置该目录;;这些目录中的文件只能由Tomcat提供,而其他任何操作都不安全。
另外,不要使用Nginx重定向到Tomcat,以便Tomcat将静态内容提供给Nginx,Nginx将它传递给客户端。如果Tomcat除了从战争中提取内容之外不会做任何事情,那么Nginx就是多余的。
最终的结果是,Nginx运行在不同的端口上,它看起来好像你有两个应用程序,但不是真的。
它不如只保持角度的应用程序分开,但你知道......“人”。
如果您打算使用tomcat从war文件提供静态内容,请不要将它放在“src/main/resources/static /”下。静态目录适用于jar部署,但在部署战争内容时很麻烦。相反,将它放在“src/main/webapp /”下。您需要确保Spring Security仍然允许它,但是标准的tomcat允许所有不在“META-INF”或“WEB-INF”下的内容请求。
如果所有这一切仍然没有你所要做的事情的方式,那么你可以定义在雄猫“server.xml中”一个单独的主机和连接器,并与自己的“文档库定义两个不同的上下文“在context.xml中。
上下文文档:https://tomcat.apache.org/tomcat-8.5-doc/config/context.html
主机文档:https://tomcat.apache.org/tomcat-8.5-doc/config/host.html
也许这有助于https://stackoverflow.com/questions/36357135/configure-spring-boot-with-two-ports – jmhostalet
如果内容真正是静态的,而你正在用Web服务器(nginx)服务你的服务,那你为什么不把你的静态内容部署到Web服务器上? –
@jmhostalet不幸的是,因为这个答案不够远。我知道如何启用第二个端口。但最初的问题是如何在两个端口上提供不同的内容。不管怎么说,还是要谢谢你! – jonas