记一次解决WebUI导航故障
起因是突然发现网站的侧边栏导航有一项失效了,遂打开F12观察(忘记截图了),大概就是浏览器试图下载一个js文件,但是ChunkLoadError了,因为Unexpected token '<',为什么呢?
因为浏览器上这个js文件不存在,所以Nginx 404回退了,返回了index.html,而index.html开头就是<!DOCTYPE html>,而浏览器把它当作js来解析就发生语法错误Unexpected token '<'了,嗯,这是个经典的前端缓存问题,尝试刷新,Ctrl+F5强制刷新,问题依旧!
观察nginx.conf,强制禁止缓存index.html试试:
# 禁止缓存 index.html
location = /index.html {
root /usr/share/nginx/html/dist;
add_header Cache-Control "no-cache, no-store, must-revalidate";
add_header Pragma "no-cache";
add_header Expires "0";
}重启Nginxdocker restart nginx-web,再次尝试,问题依旧!
我倒要看看这个js文件存不存在:
docker exec -it nginx-web ls /usr/share/nginx/html/dist/static/js/结果是显然存在,再看看index.html引用的是不是真的是这个js文件:
docker exec -it nginx-web cat /usr/share/nginx/html/dist/index.html它引用的也没错啊,难道是权限问题?修改下权限试试:
docker exec -it nginx-web chmod -R 755 /usr/share/nginx/html/dist再次Ctrl+F5刷新浏览器,问题依旧!
看看Nginx有没有报错先:
docker exec -it nginx-web tail -n 50 /var/log/nginx/error.log没有报错,最新的一条日志停留在昨天,情况变得有趣了,Nginx“成功”执行了try_files的回退,也就是它认为那个js文件不存在,于是返回了index.html。那么为什么文件明明就在那,Nginx却看不到?
试试手动模拟一下Nginx读取这个js文件:
docker exec -it --user 101 nginx-web cat /usr/share/nginx/html/dist/static/js/chunk-2a07b274.d998b004.js > /dev/null && echo "Nginx用户可读" || echo "Nginx用户不可读"发现能读到啊,再试试直接在容器里请求一下这个js文件:
docker exec -it nginx-web curl -I http://127.0.0.1/static/js/chunk-2a07b274.d998b004.js输出:
HTTP/1.1 302 Moved Temporarily
Server: nginx/1.22.1
Date: Fri, 21 Nov 2025 02:22:52 GMT
Content-Type: text/html
Content-Length: 145
Connection: keep-alive
Location: https://exmple-domain.com/static/js/chunk-2a07b274.d998b004.js一切正常,难道问题出在HTTPS的处理上?再试试用HTTPS请求一下这个js文件试试:
docker exec -it nginx-web curl -k -I https://127.0.0.1/static/js/chunk-2a07b274.d998b004.js输出:
HTTP/1.1 200 OK
Server: nginx/1.22.1
Date: Fri, 21 Nov 2025 02:25:29 GMT
Content-Type: application/javascript
Content-Length: 45222
Last-Modified: Wed, 19 Nov 2025 09:13:21 GMT
Connection: keep-alive
ETag: "691d8a31-b0a6"
Accept-Ranges: bytes还是一切正常!
怎么回事,服务器好像一切正常啊?就在这时,我突然想起来试试浏览器的无痕模式。
结果······好了!!!绕了一大圈,还是浏览器缓存问题。
本文链接:
/archives/w9j5H9Zv
版权声明:
本站所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自
Liccsu's blog!
喜欢就支持一下吧
打赏
微信
微信