【发布时间】:2018-03-30 11:57:24
【问题描述】:
是否可以使用 Spring Boot 从不同端口提供 REST API 和静态内容?这在使用 CORS 时变得有趣。意味着,插入的 nginx 会将发往 api.example.com 的请求路由到一个端口,并将发往 static.example.com 的请求路由到另一个端口。示例:
GET :8080/index.html 应该提供 src/main/resources/static/index.htmlGET :8090/customers/1 应该提供由(例如)CustomerController 提供的内容
具有交换端口号的请求(因此 REST API 为 8080,静态内容为 8090)不应工作。
1 级答案:如何使用嵌入式 Tomcat 完成此任务?
2 级答案:如何使用运行 Spring Boot 应用程序的托管 Tomcat 来完成此任务?
不是解决方案,因为这很明显:“将其拆分为两个应用程序”。
【问题讨论】:
-
如果内容是真正的静态内容,并且您的服务前端使用 Web 服务器 (nginx),那么为什么不将静态内容部署到 Web 服务器?
-
@jmhostalet 不幸的是,没有,因为这个答案还远远不够。我知道如何启用第二个端口。然而,最初的问题是如何在两个端口上提供不同的内容。还是谢谢!
-
@AndyBrown 感谢您的提示,但这不是一个选项,因为 nginx 充当多个应用程序的网关。
-
如果内部你的rest调用隐藏在一个子路径后面,比如/rest,那可能会更容易,那么你可以配置nginx将8080上的所有内容路由到/static/bla,并将8090上的所有内容路由到/休息/布拉。如果人们切换端口,它应该会自动不起作用,因为内容不会存在于重新路由的子路径下。
标签: java spring tomcat spring-boot