gpt4 book ai didi

spring-boot-actuator - 您如何为 Spring Boot Actuator 配置基本 URL,以便它由基本端点返回?

转载 作者:行者123 更新时间:2023-12-04 08:19:50 29 4
gpt4 key购买 nike

Spring Boot 的执行器基础端点返回 json 和所有启用端点的 href 链接。这些链接都默认为 localhost:8080,但我使用主机名(例如 machine.mydomain.com)进行了身份验证。

我怎样才能获得要填充的链接 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
}
}

最佳答案

我的应用程序遇到了同样的问题。 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-*标题。最简单的解决方案是添加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;
}

关于spring-boot-actuator - 您如何为 Spring Boot Actuator 配置基本 URL,以便它由基本端点返回?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52788698/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com