Spring Actuator除health/info外其他端点返回404问题咨询
解决Spring Boot Actuator仅能访问health和info端点的问题
我来帮你搞定这个问题!你碰到的是Spring Boot Actuator配置里一个很常见的小误区:你只启用了各个端点,但没配置把它们暴露给Web访问。
核心原因
Spring Boot Actuator的默认规则是:
- 大部分端点默认处于启用状态(你手动开启的那些配置也没问题)
- 但默认只对外暴露
health和info这两个端点,其他启用的端点不会通过HTTP对外开放,所以访问时会返回404错误。
解决步骤
你只需要在application.properties里添加一行关键配置,指定要暴露的端点:
# 暴露所有已启用的端点(*代表全部) management.endpoints.web.exposure.include=*
如果有个别端点你不想暴露(比如shutdown,因为它允许关闭应用,风险较高),可以用exclude来排除:
# 暴露所有端点,除了shutdown management.endpoints.web.exposure.include=* management.endpoints.web.exposure.exclude=shutdown
结合你现有配置的完整示例
把上面的配置加到你现有的application.properties里,最终配置大概是这样:
# 启用各个端点 management.auditevents.enabled=true management.endpoint.beans.enabled=true management.endpoint.caches.enabled=true management.endpoint.conditions.enabled=true management.endpoint.configprops.enabled=true management.endpoint.env.enabled=true management.endpoint.flyway.enabled=true # management.endpoint.health.enabled=true (默认已启用) management.endpoint.heapdump.enabled=true management.endpoint.httptrace.enabled=true # management.endpoint.info.enabled=true (默认已启用) management.endpoint.integrationgraph.enabled=true management.endpoint.jolokia.enabled=true management.endpoint.logfile.enabled=true management.endpoint.loggers.enabled=true spring.liquibase.enabled=true management.endpoint.metrics.enabled=true management.endpoint.mappings.enabled=true management.endpoint.prometheus.enabled=true management.endpoint.scheduledtasks.enabled=true management.endpoint.sessions.enabled=true management.endpoint.shutdown.enabled=true management.endpoint.threaddump.enabled=true # 关键配置:暴露所有已启用的端点 management.endpoints.web.exposure.include=*
验证方法
重启你的Spring Boot应用后,先访问http://localhost:8080/actuator,这个地址会列出所有已暴露的端点列表。之后你就可以正常访问/actuator/env、/actuator/beans这些之前返回404的端点啦。
另外提个小注意:shutdown端点默认只接受POST请求,如果你想用GET访问的话,可以额外配置management.endpoint.shutdown.web.post-only=false,但出于安全考虑,不建议在生产环境这么做哦。
内容的提问来源于stack exchange,提问作者Sandeep
相关产品推荐
相关产品推荐

