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

Nginx加载Next.js静态CSS文件返回403错误,可能原因是什么?

排查Nginx加载Next.js静态CSS返回403的常见原因
  • 文件/目录权限问题
    即便root路径配置正确,Nginx进程的运行用户(通常为www-data或nginx)可能没有读取_next/static/css目录及内部文件的权限。
    执行以下命令检查权限:

    ls -ld /path/to/your/nextjs/app/_next/static/css
    ls -l /path/to/your/nextjs/app/_next/static/css
    

    需确保目录权限至少为755,文件权限至少为644,且所有者/组包含Nginx运行用户,或其他用户具备读权限。
    修复权限的示例命令:

    chmod -R 755 /path/to/your/nextjs/app/_next
    chown -R www-data:www-data /path/to/your/nextjs/app/_next
    
  • SELinux/AppArmor安全限制
    若服务器启用了SELinux(常见于CentOS/RHEL)或AppArmor(常见于Ubuntu),它们可能拦截Nginx对静态文件目录的访问。
    针对SELinux,可临时关闭测试:

    setenforce 0
    

    若问题解决,添加永久规则:

    semanage fcontext -a -t httpd_sys_content_t "/path/to/your/nextjs/app/_next(/.*)?"
    restorecon -Rv /path/to/your/nextjs/app/_next
    

    针对AppArmor,需编辑Nginx配置文件,允许访问目标目录后重新加载规则。

  • Nginx规则冲突
    检查配置中是否存在针对/_next/static/的location块,或try_files规则是否覆盖了静态资源访问逻辑。标准的Next.js Nginx配置应包含专门处理静态资源的规则,示例:

    location /_next/static/ {
        root /path/to/your/nextjs/app;
        expires 1y;
        access_log off;
    }
    

    确保该location块优先级高于其他通用规则,避免被拦截。

  • Next.js构建产物异常
    重新执行npm run build或yarn build,确认构建无报错,且_next/static/css目录下存在对应CSS文件。构建失败可能导致静态资源缺失或路径生成错误。

  • 缓存干扰
    清除Nginx缓存(若配置了缓存),同时清空浏览器缓存或使用无痕模式访问,排除缓存导致的旧路径错误。

内容的提问来源于stack exchange,提问作者Кирилл

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.22 21:17:08