You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Spring Boot从1.5.10迁2.0.0后多域名部署静态资源访问异常

Spring Boot 2.0迁移后Heroku多域名静态资源访问问题排查方案

我之前帮朋友排查过几乎一模一样的问题,Spring Boot 2.0在静态资源处理和请求解析上和1.5.x版本有不少关键变化,再结合Heroku多域名部署的场景,大概率是这几个点出了问题,你可以一步步排查:

1. 先检查静态资源映射的配置兼容性

Spring Boot 2.0对静态资源的自动配置逻辑做了调整,虽然大部分场景下向下兼容,但如果你的应用有自定义资源路径,很容易踩坑:

  • 打开你的application.properties(或application.yml),确认spring.resources.static-locations配置是否正确,这个配置在2.0版本里依然可用,但如果之前是基于1.5的自定义配置,要确保路径指向的是classpath:/static/、classpath:/public/这些默认的静态资源目录。
  • 如果你用了WebMvcConfigurer自定义资源映射,2.0版本的写法和1.5略有不同,要确保没有加不必要的Host限制,比如正确的写法应该是:
@Configuration
public class WebConfig implements WebMvcConfigurer {
    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
        // 确保/**映射覆盖所有路径,包括不同域名的请求
        registry.addResourceHandler("/**")
                .addResourceLocations("classpath:/static/", "classpath:/public/");
    }
}

2. 排查上下文路径的配置变更

这是Spring Boot 1.5到2.0迁移最容易忽略的点之一:

  • 1.5版本中上下文路径的配置是server.context-path=/your-app-path,而2.0版本改成了server.servlet.context-path=/your-app-path。如果迁移后你没改这个配置项,主域名可能因为缓存或者默认路径巧合能访问,但其他域名的请求会因为路径解析错误返回404。
  • 修改配置后,测试访问secondarydomain.com/your-app-path/js/example.js,如果能正常访问,说明就是这个问题导致的。

3. 确认Heroku的多域名路由配置

Heroku的域名转发逻辑如果有问题,也会导致静态资源无法访问:

  • 先通过heroku domains命令确认所有二级域名都已经添加到你的应用域名列表中,没有遗漏。
  • 用curl -v secondarydomain.com/js/example.js查看请求的详细日志,看响应是404(应用没处理)还是其他错误:
    • 如果是404,说明请求确实到了应用,但应用的资源映射没匹配上;
    • 如果是5xx或者跳转错误,可能是Heroku的路由配置有问题,需要重新添加域名或者联系Heroku支持。

4. 检查是否有Host相关的拦截规则

如果你的应用里有拦截器、过滤器或者安全配置(比如Spring Security)对Host头做了限制,只允许主域名的请求通过,那其他域名的静态资源请求就会被拦截:

  • 查看你的拦截器代码,或者Spring Security的配置,确认是否有基于Host的访问控制规则,把所有允许的二级域名加入白名单。
  • 比如Spring Security中,要确保authorizeRequests()没有限制静态资源路径的Host访问。

5. 清除Heroku和浏览器的缓存

Heroku会对静态资源做缓存优化,迁移后旧的缓存规则可能导致资源无法加载:

  • 可以通过heroku restart重启应用实例,强制刷新缓存;
  • 同时清除浏览器的缓存(用Ctrl+Shift+R强制刷新),排除客户端缓存的影响。

按照这个顺序排查,应该能快速定位到问题所在,我当时帮朋友解决的就是上下文路径配置没改的问题,改完之后所有域名的静态资源都正常访问了。

内容的提问来源于stack exchange,提问作者Aleix Alcover

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 03:28:39