首页 > 解决方案 > http 请求如何在已部署的 Spring Boot 应用程序中工作?

问题描述

有人可以解释托管是如何工作的吗?在我的 Spring Boot 应用程序中有嵌入式 tomcat 服务器。据我了解spring应用程序与tomcat一起运行,tomcat需要一些端口,例如8080,并监听来自该端口的请求(至少在本地部署时)localhost:8080。我可以从我的前端应用程序发出请求,该应用程序在 localhost:3000 上运行,tomcat 将接受请求,找到映射到前端请求定向到“/user”或“/myposts”或其他任何东西的控制器的控制器,该控制器运行代码,与 db 对话将数据插入响应中,然后 tomcat 将其发送回前端。

如果我将我的应用程序部署到一些托管服务,如谷歌云,spring 应用程序是否仍与 tomcat 一起运行?在那种情况下,tomcat 将在哪个端口上运行,我的前端会将请求发送到哪里?到谷歌云为我的项目设置的子域?我需要在哪里配置 SSL/https?我的前端是否会通过 https 端点向 google 子域发送安全请求,并将这些请求通过 http(不安全,内部托管服务器)中继到部署的 spring 应用程序?或者如何?

标签: javaspring-boottomcatweb-hosting

解决方案


最直接的方法之一是启动一个实例,通过 ssh 进入该实例并运行您的 Spring Boot 应用程序,就像在您的机器上运行它一样。一切都与该云实例上的工作方式相同。您的 Spring Boot 应用程序仍然在 tomcat 中运行,它仍然侦听端口 8080。唯一的区别是现在主机名不再是 localhost,而是该实例的 DNS 名称。您可以在控制台上找到 DNS 名称。

如果您想在 Spring Boot 应用程序中“本地”启用 https,则需要获得 SSL 证书。或者,您可以在云实例前设置负载均衡器或 API 网关来为您执行 SSL 终止。在这种情况下,您的前端将向负载均衡器或 API 网关发送请求,而不是您的 Spring Boot 应用程序。他们接受 https 请求并将它们转换为 http 请求并将其发送到您的 Spring Boot 应用程序。


推荐阅读