Java 如何使spring boot嵌入式tomcat返回200 OK作为基本url?

Java 如何使spring boot嵌入式tomcat返回200 OK作为基本url?,java,spring,spring-mvc,spring-boot,Java,Spring,Spring Mvc,Spring Boot,我的应用部署在http://123.87.65.23:8080。上下文路径是在application.properties中配置的/myapp。所以如果我访问http://123.87.65.23:8080,我得到404。但是如果我访问http://123.87.65.23:8080/myapp/health,我得到了预期的200英镑 我们的运营团队监控基本url(http://123.87.65.23:8080)表示200正常。 我有两个选择: 当我点击http://123.87.65.23:

我的应用部署在
http://123.87.65.23:8080
。上下文路径是在
application.properties
中配置的
/myapp
。所以如果我访问
http://123.87.65.23:8080
,我得到404。但是如果我访问
http://123.87.65.23:8080/myapp/health
,我得到了预期的200英镑

我们的运营团队监控基本url(
http://123.87.65.23:8080
)表示200正常。 我有两个选择:

  • 当我点击
    http://123.87.65.23:8080
    。无需答复

  • 或者以某种方式代理请求
    http://123.87.65.23:8080
    http://123.87.65.23:8080/myapp/health
    在我的Spring Boot应用程序中


  • 注意:我使用的是嵌入式tomcat。因此,更改server.xml的选项不适用


    我不知道如何做这两个选项。

    在tomcat容器中,如果您想使用根URL,您的应用程序应该部署到名为“ROOT”而不是“myapp”的目录中。我猜您的Dispatcherservlet可能配置为处理对/health的请求,您只需处理/ 或者你有一个控制器,映射到/health。
    如果在
    .properties
    文件中设置
    contextPath
    属性,那么Spring将执行它应该执行的操作,所有内容都将移动到那里

    如果您将应用程序打包为
    .war
    并在外部服务器中运行,那么您可以设置该服务器,将根请求重定向到Spring Boot应用程序中的任何URL

    如果要将应用程序打包为可运行的
    .jar
    和嵌入式服务器,并且希望将
    上下文路径
    保留在
    .properties
    级别
    ,则

    a) 您仍然需要某种外部服务器,它可以捕获对root用户的请求并重定向到Spring引导应用程序

    b) 您需要设置两个不同的
    DispatcherServlets
    ,其中一个的
    contextPath
    /myapp
    ,另一个是
    /code>,它将重定向到Spring Boot应用程序


    然而,最简单的解决方案是删除
    contextPath
    ,只需在每个控制器的
    @RequestMapping
    前面加上
    /myapp
    ,使用
    management.context path
    将所有
    management
    端点移动到
    /myapp
    ,并编写一个映射到
    /
    @Controller
    方法,重定向到健康端点。

    如果您想在
    http://123.87.65.23:8080
    请求,在webapps文件夹中需要一个名为
    ROOT.war
    的应用程序

    所以
    http://123.87.65.23:8080
    http://123.87.65.23:8080/myapp
    是两种不同的应用程序

    我建议你有两个选择:

  • 将应用程序部署为
    http://123.87.65.23:8080
    (ROOT.war)
  • 使用一些代理服务器,如nginx或apache。您可以将代理服务器配置为将所有根请求重定向到您的应用程序
  • 以下是nginx的一些示例:

    或者直接返回200:

    location / {
        return 200;
    }
    

    我正在使用嵌入式tomcat。所以使用root.war不是我的选择
    location / {
        return 200;
    }