当前位置: 首页 > 知识库问答 >
问题:

如何配置Spring Boot执行器的基本url,使其由基本endpoint返回?

李意致
2023-03-14

Spring Boot的执行器基本endpoint返回json,其中包含所有启用endpoint的href链接。这些链接都默认指向localhost:8080,但我使用主机名(如machine)进行身份验证。我的域名。通用域名格式。

如何让链接填充https://machine.mydomain.com而不是http://localhost:8090?

我访问时执行器的输出示例https://machine.mydomain.com/actuator

/ 20181012150557
// https://machine.mydomain.com/actuator

{
  "_links": {
    "self": {
      "href": "http://localhost:8090/actuator",
      "templated": false
    },
    "beans": {
      "href": "http://localhost:8090/actuator/beans",
      "templated": false
    },
    "health": {
      "href": "http://localhost:8090/actuator/health",
      "templated": false
    }
}

我想要的是/20181012150557/https://machine.mydomain.com/actuator

{
  "_links": {
    "self": {
      "href": "https://machine.mydomain.com/actuator",
      "templated": false
    },
    "beans": {
      "href": "https://machine.mydomain.com/actuator/beans",
      "templated": false
    },
    "health": {
      "href": "https://machine.mydomain.com/actuator/health",
      "templated": false
    }
}

共有1个答案

浦德明
2023-03-14

我的申请也遇到了同样的问题。Spring Boot使用当前请求URL在执行器主页上生成超媒体链接。

请参见WebMvcEndpointHandlerMapping

@Override
@ResponseBody
protected Map<String, Map<String, Link>> links(HttpServletRequest request,
        HttpServletResponse response) {
    return Collections.singletonMap("_links",
            this.linksResolver.resolveLinks(request.getRequestURL().toString()));
}

如果您在代理(Apache, nginx)后面,实际请求URL可能会移动到X-Forwarded-*标头。最简单的解决方案是为执行器endpoint添加Spring的ForwardedHeaderFilter,如下所示:

@Bean
public FilterRegistrationBean forwardedHeaderFilter() {
    final FilterRegistrationBean<ForwardedHeaderFilter> filter = new FilterRegistrationBean<>(new ForwardedHeaderFilter());
    filter.setName("Forwarded Header filter");
    filter.setUrlPatterns(Collections.singletonList("/actuator/*"));
    return filter;
}
 类似资料:
  • 我使用Kubernetes集群部署了Spring boot应用程序。我已经用springfox配置了swagger。文件* 现在在昂首阔步的页面上,当我使用“试用”按钮,并提交一个应用编程接口请求时,请求URL就像https://java: 9080/api/顾客/订单一样形成,应该https://application.domain.com/api/customer/order 昂首阔步的页面在

  • 我正在将一个旧的java Spring项目重构为springboot,并以传统的war风格部署它。出于某种原因,我必须坚持传统的web.xml来启动应用程序。多亏了Springboot遗产,我可以通过web.xml实现这一点: 此外,我添加了springboot执行器依赖项。应用程序。属性如下所示: 应用程序可以正常启动,但当我尝试从浏览器访问endpoint时,它只返回一个“401需要完全身份验

  • 您已经知道了,Emacs 的配置文件为 ~/.emacs 。配置文件中,以 ; 起始到行末的部分为注释。 让我们些简单配置一下: 例 25.1. emacs 配置 ~/.emacs ;;======================================== ;;添加 Emacs 搜索目录 可以将自定的扩展放该目录 ;;==================================

  • 问题内容: 当我将网站放在开发环境中时-它是url: **testurl.com** 现在在生产服务器上,我的codeigniter应用程序的地址必须为 **someurl.com/mysite/** 我将它移到那里,每次尝试运行某些功能时,例如 / home / test- 它使我进入 **someurl.com/home/test-** 这是错误的。 它必须是 **someurl.com/my

  • nutz及周边插件,均已发布到maven中央库库,可以直接配置使用 <dependency> <groupId>org.nutz</groupId> <artifactId>nutz</artifactId> <version>1.r.68.v20190220</version> </dependency> 快照库地址 https://jfrog.nutz.cn/art

  • 前言 想想也已经做过不少架构的项目了,有基于vue,基于react,基于thinkPHP,基于laravel的。 做多了,也就对现有的架构有各种想法,有好的,有坏的,总之,用起来还是不爽。vue-cli虽然可以很快地构建并使用,尤其是vue-cli v3.0,把webpack都封进@vue/cli的sdk里了,用起来更加干净、简洁。 但是,对于爱折腾的我们,好吧,开个玩笑。重来,但是,对于页面的优