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

使用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内JS文件权限
  • chunks目录权限: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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 20:16:07