一、open() min.js.map failed
访问nginx时,提示错误:
2026/02/20 02:43:03 [error] 2369#2369: *336 open() "/home/apps/tomcat/webapps/ROOT/resources/lib/vxe-table/index.umd.min.js.map" failed (2: No such file or directory), client: 59.42.87.52, server: www.demo.com, request: "GET /resources/lib/vxe-table/index.umd.min.js.map HTTP/1.1", host: "www.demo.com"
1.1、原因
浏览器默认会请求 .map 文件(Source Map)用于调试,但是Tomcat里面没有.map文件,或者 Nginx 的 try_files 配置会优先查找本地文件而不是代理到 Tomcat。
1.2、方案
关闭 Source Map 请求即可(如果确实需要,也可以把.map文件部署到服务器)。
server {
listen 80;
server_name www.demo.com;
location / {
proxy_pass http://localhost:8080; # 你的Tomcat地址
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
# 拦截所有 .map 请求,返回 204 No Content,不记录错误日志
location ~* \.map$ {
access_log off;
log_not_found off;
return 204;
}
}
1.3、最佳实践
server {
listen 80;
server_name www.demo.com;
# 日志优化:忽略常见的静态资源找不到错误
error_log /var/log/nginx/error.log warn;
location / {
proxy_pass http://localhost:8080;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
# 可选:直接处理静态资源缓存,减少Tomcat压力
location ~* \.(js|css|png|jpg|jpeg|gif|ico|svg|woff|woff2|ttf|eot)$ {
expires 30d;
add_header Cache-Control "public, immutable";
# 关键:try_files 失败时回源到Tomcat
try_files $uri @proxy;
}
location @proxy {
proxy_pass http://localhost:8080;
proxy_set_header Host $host;
}
# 屏蔽 .map 请求,减少无效日志
location ~* \.map$ {
access_log off;
log_not_found off;
return 204;
}
}
这里做了几个优化:
1、静态资源直接通过Nginx来处理,减小tomcat的压力
2、屏蔽.map请求,且不记录错误日志