使用Nginx部署Next.js时chunks目录JS文件出现403 Forbidden错误
Next.js部署Nginx时_next/static/chunks下JS文件403 Forbidden问题排查与解决
部署Next.js应用到Nginx后,仅_next/static/chunks目录下的JS文件返回403 Forbidden,同路径下其他目录(如AkIOTV9_ZRaGvsXBvXd8E)中的_buildManifest.js、_ssgManifest.js等文件可正常加载(返回200状态码)。且使用VPN访问时,该403错误消失。
已尝试参考同类问题但未解决,当前Nginx配置如下:
server { listen 80; server_name shahbazism.ir www.shahbazism.ir; gzip on; gzip_proxied any; gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text-java$ gzip_comp_level 6; gzip_buffers 16 8k; gzip_min_length 256; access_log /var/www/lawyer/logs/nginx-access.log; error_log /var/www/lawyer/logs/nginx-error.log; root /var/www/lawyer/interface/build; location /_next/static/ { alias /var/www/lawyer/interface/build/.next/static/; expires 365d; access_log off; } location / { proxy_pass http://127.0.0.1:3000; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection 'upgrade'; proxy_set_header Host $host; proxy_cache_bypass $http_upgrade; } }
文件权限情况:
- chunks目录内JS文件权限:

- chunks目录权限:

可能的原因与解决步骤
1. 确认Nginx用户的递归访问权限
虽然权限截图显示文件和目录有读权限,但需确保Nginx运行用户(通常为www-data或nginx)对/var/www/lawyer/interface/build/.next/static/chunks路径拥有完整的递归读取权限:
- 执行命令查看Nginx运行用户:
ps aux | grep nginx - 递归设置目录权限:
sudo chown -R www-data:www-data /var/www/lawyer/interface/build/.next sudo chmod -R 755 /var/www/lawyer/interface/build/.next
2. 修正Nginx静态资源路径配置
当前location /_next/static/使用alias可能存在路径匹配偏差,可尝试两种调整方式:
方式一:替换为root指令
location /_next/static/ { root /var/www/lawyer/interface/build/.next/; expires 365d; access_log off; allow all; }
方式二:规范alias路径并添加try_files
location /_next/static/ { alias /var/www/lawyer/interface/build/.next/static/; expires 365d; access_log off; try_files $uri $uri/ =404; }
修改配置后重启Nginx:sudo systemctl restart nginx
3. 排查CDN或地域网络限制
VPN访问正常说明问题可能与网络层面的限制有关:
- 若使用CDN服务,强制清除CDN缓存,确保静态资源同步更新
- 检查服务器所在地区的防火墙或安全策略,确认chunks目录下的JS文件未被拦截
- 临时关闭Nginx的gzip配置测试,排除压缩规则导致的文件识别异常
4. 验证Next.js构建产物完整性
重新执行构建命令,确保chunks目录下的文件生成完整且无损坏:
npm run build
构建完成后对比本地与服务器上的/.next/static/chunks目录文件,确认文件数量、大小一致。
5. 通过Nginx错误日志定位具体原因
查看Nginx错误日志,搜索403相关条目,日志会明确指出错误根源(如权限不足、路径不存在、规则拦截等):
tail -f /var/www/lawyer/logs/nginx-error.log
内容的提问来源于stack exchange,提问作者hassan moradnezhad
相关产品推荐
相关产品推荐

