使用spring boot为来自不同端口的REST API和静态内容提供服务 您所在的位置:网站首页 boot程序 使用spring boot为来自不同端口的REST API和静态内容提供服务

使用spring boot为来自不同端口的REST API和静态内容提供服务

2023-03-15 05:50| 来源: 网络整理| 查看: 265

匿名用户

“如何用嵌入式Tomcat实现这一点?”

这可能是可能的,但不建议这样做。那会给你带来太多的压力而不值得。

相反,使用“/api/v1/”前缀,并将所有restful端点放在该路径后面。

然后,“/api”路径可以由spring安全部门专门管理(允许CORS等)。

“V1”路径允许您为客户或可能具有依赖于日期的业务逻辑的情况对api进行版本化。

“如何使用运行spring boot应用程序的托管Tomcat来实现这一点?”

我明白你为什么要这么做;我有过“人”(?)让我也做些奇怪的事/

在这个场景中,我也建议对restful端点使用相同的“/api”方法,但是阻止对Tomcat的所有静态内容请求。可以配置spring安全性,以便通过tomcat只能请求“API”下的restful端点,并阻止对tomcat的任何静态内容请求。

将Nginx配置为与tomcat位于同一服务器上,并将NgineX文档库设置为war扩展后静态内容所在位置。

不要使该目录位于“META-INF”或“WEB-INF”内任何地方;这些目录中的文件应该只由Tomcat提供,其他任何操作都是不安全的。

另外,不要使用Nginx重定向到Tomcat,以便Tomcat将静态内容提供给Nginx,后者将其传递给客户端。如果Tomcat除了从war中提取内容之外还要做任何事情,那么拥有Nginx就是多余的。

最终的结果是,Nginx运行在不同的端口上,看起来就好像你有两个应用程序,但实际上并非如此。

它还不如只是让你的棱角分明的应用分开,但你知道。。。“人”。

如果您打算使用tomcat为war文件中的静态内容提供服务,那么不要将其放在“src/main/resources/static/”下面。静态目录对于jar部署很好,但是在部署来自WAR的内容时会很麻烦。相反,将其放在“src/main/webapp/”下。您需要确保spring安全性仍然允许它,但是标准tomcat允许对不在“META-INF”或“WEB-INF”下的内容的所有请求。

如果所有这些仍然不是您必须做的事情,那么您可以在tomcats“server.xml”中定义一个独立的主机和连接器,并在context.xml中用它们自己的“docbase”定义这两个不同的上下文。

上下文文档:https://tomcat.apache.org/tomcat-8.5-doc/config/Context.html

主机文档:https://tomcat.apache.org/tomcat-8.5-doc/config/Host.html



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有