http 请求如何在已部署的 Spring 启动应用程序中工作?

How do http requests work in deployed Spring Boot app?

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

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

最直接的方法之一是启动一个实例,ssh 进入该实例,然后 运行 您的 spring 启动应用程序,就像您 运行它在你的机器上。一切都像在该云实例上一样工作。您的 spring 启动应用程序仍在 tomcat 内 运行 并且它仍然侦听端口 8080。唯一的区别是现在主机名不再是本地主机,它将是该实例的 DNS 名称.您可以在控制台上找到 DNS 名称。

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