【问题标题】:(How) Can I run more than one Spring Boot application on the same server and port?(如何)我可以在同一服务器和端口上运行多个 Spring Boot 应用程序吗?
【发布时间】:2020-05-17 10:40:32
【问题描述】:

我有一个 Spring Boot Web 应用程序,我想将其拆分为大约六个独立的应用程序;一个将提供主页并在“/”下的端点登录,其他每个将声明一个子目录路径(“/subsystem1”、“/subsystem2”等)。我非常清楚如何使用 JWT 将身份验证/授权从登录应用程序传递给其他应用程序。

这样做的主要原因是每个子系统都可以在不关闭其他子系统的情况下进行修改或更新。并且在组织上,因此当仅更改一个子系统时,我们不必将整个应用程序置于 QA 流程中。

是否可以设置多个 Spring Boot 实例同时在同一服务器和同一端口上运行,其端点具有不同的路径/目录?如何?

我找不到任何重复的问题,但这里有两个相关的问题可能会提供线索:

可接受的答案:

如果像 ekalin 建议的那样,让多个 Spring Boot 应用程序监听同一个端口是不可能的,这里有一些我头脑风暴的想法(但不知道如何实现) :

  • 也许实例可能在不同的端口上运行,但主应用程序(带有登录页面的应用程序)可能会以某种方式“转发”或重定向到其他应用程序,从而隐藏其真实 URL?例如。 “localhost:8080/subsystem1”将是“localhost:8081/”的别名。

  • 也许每个应用程序都可以有自己的 Docker 容器,所有这些容器都在共享的 Docker 网络中运行,并且我们以某种方式使用 Docker 将每个 URL 路径映射到正确的应用程序?可以用 docker-compose 设置吗?

  • 我们设置了某种代理服务器,将 URL 路径重新映射到单独的应用程序。

【问题讨论】:

    标签: spring-boot deployment


    【解决方案1】:

    您不能让多个应用程序在一个端口上侦听。内核将如何将包发送到哪个应用程序?

    你可以运行一个http服务器比如nginx在8080上监听,每个应用在不同的端口,然后根据URL代理请求到想要的应用。

    【讨论】:

    • 代理服务器的想法:看起来很简单,但我以前从未这样做过。你能推荐一个工具或读物来帮助我入门吗?
    • nginx 可能是最流行且易于设置的,但 apache 也应该可以工作。或任何其他支持反向代理的 http 服务器。
    • garron.me/en/linux/nginx-reverse-proxy.html 显示了本案例的基本配置。
    猜你喜欢
    • 2018-04-04
    • 2019-10-09
    • 1970-01-01
    • 2013-04-04
    • 1970-01-01
    • 2021-03-02
    • 2021-03-01
    • 2019-02-20
    • 1970-01-01
    相关资源
    最近更新 更多