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

Nginx 显示网站旧版本问题求助(附配置文件)

Nginx反向代理显示Vue应用旧版本问题排查与解决

针对你遇到的Vue+Python API应用Docker部署后Nginx显示旧版本的问题,结合你的配置和已做操作,整理以下排查方向和解决步骤:

1. 确认Docker镜像内的前端产物是否为最新

本地npm run dev正常,但Docker部署后显示旧内容,首先要排查镜像里的静态文件是否是最新构建产物:

  • 进入Nginx容器查看文件:docker exec -it <你的Nginx容器ID> ls -l /usr/share/nginx/html/js
  • 对比本地npm run build生成的dist目录下文件的哈希后缀(比如app.xxxx.js),如果镜像内文件哈希和本地不一致,说明镜像构建时未拉取最新代码或未重新执行构建。
  • 构建镜像时禁用缓存,强制重新构建:docker build --no-cache -t <你的镜像名> .

2. 调整Nginx静态资源缓存策略

你的Nginx配置中给js/css等静态文件设置了30天强缓存,若Vue构建未启用文件名哈希(默认是启用的),会导致客户端缓存旧文件;即使启用哈希,也需要确保缓存策略和哈希机制匹配:
修改静态资源的location配置:

location ~* \.(js|css|ico|ttf|eot|woff|woff2)$ {
    expires 1y;
    add_header Cache-Control "public, immutable";
    try_files $uri =404;
}
  • immutable标记配合哈希文件名,确保客户端不会主动验证缓存,因为文件名变化就代表内容更新;
  • 若你关闭了Vue的filenameHashing配置,必须把缓存时间改短(比如expires 1h),避免旧文件长期缓存。

3. 确保index.html不被缓存

index.html是Vue应用的入口,若客户端缓存了旧的index.html,会继续加载旧的静态资源链接。给index.html单独添加缓存控制:

location = /index.html {
    add_header Cache-Control "no-cache, no-store, must-revalidate";
    expires 0;
}

这样客户端每次都会请求最新的index.html,从而加载带最新哈希的静态文件。

4. 检查中间缓存层

如果你的站点前端有CDN、负载均衡等中间缓存服务,这些服务可能留存了旧的静态资源或index.html,需要手动刷新这些服务的缓存。

5. 验证Nginx是否加载了新配置

即使重建了容器,也可以手动重启Nginx服务确保配置生效:

docker exec -it <你的Nginx容器ID> nginx -s reload

内容的提问来源于stack exchange,提问作者Sun Water

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.14 11:28:18