Spring Boot3.2.1+Spring Cloud2023.0.0部署生产环境遇静态资源异常
问题分析与解决办法
核心问题定位
报错NoResourceFoundException: No static resource monitor/lb表明系统尝试访问/monitor/lb路径对应的静态资源,但未找到匹配的文件。结合Spring Boot 3.2.1 + Spring Cloud 2023.0.0的版本升级背景,以及本地正常、生产异常的差异,可从以下维度排查解决:
具体解决步骤
确认请求来源
先排查生产服务器上/monitor/lb请求的发起方:可能是监控工具、反向代理配置、上下游服务调用的误写路径。若为外部请求配置错误,直接修正调用方路径即可解决。核对Actuator端点配置
Spring Boot 3.x对Actuator端点的默认路径、暴露规则做了调整,若原项目依赖/monitor作为监控前缀,需显式配置:management: endpoints: web: base-path: /monitor # 覆盖默认的/actuator路径 exposure: include: health,info # 根据实际需求选择要暴露的端点,避免全开风险确保配置在生产环境的配置文件中生效,而非仅在本地配置。
检查负载均衡依赖与静态资源映射
Spring Cloud 2023.0.0默认使用Spring Cloud LoadBalancer,若项目需提供lb相关监控静态资源:- 确认依赖正确引入:
<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-loadbalancer</artifactId> </dependency>- 若存在自定义WebMvc配置,检查是否覆盖了默认静态资源映射,可添加自定义映射规则:
@Configuration public class WebResourceConfig implements WebMvcConfigurer { @Override public void addResourceHandlers(ResourceHandlerRegistry registry) { registry.addResourceHandler("/monitor/**") .addResourceLocations("classpath:/static/monitor/"); } }并在
src/main/resources/static/monitor/目录下放置lb相关的静态资源文件(如HTML、JS等)。验证生产打包完整性
本地正常但生产异常,可能是打包时静态资源未被正确包含。检查构建工具配置:
Maven项目确保pom.xml中资源配置正确:<build> <resources> <resource> <directory>src/main/resources</directory> <includes> <include>**/*</include> </includes> </resource> </resources> </build>打包后解压jar/war文件,确认
static/monitor/目录及相关资源存在。
内容的提问来源于stack exchange,提问作者user23302885
相关产品推荐
相关产品推荐

