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

NextJS部署至Azure App Service后资源(图片、CSS、JS)无法加载

解决Next.js部署到Azure App Service的资源加载问题

先别急着换Nginx,优先排查这几个核心问题

  • 检查静态资源路径配置
    启用output: 'standalone'后,Next.js会把静态资源打包到.next/static目录。如果你的App Service使用自定义域名或在虚拟路径下运行,必须在next.config.mjs中配置assetPrefix: '/你的虚拟路径';如果是根域名部署,确认该配置无需额外设置,但要保证Azure的路由规则能正确映射静态资源请求。
  • 验证Azure启动命令
    本地用node .next/standalone/server.js启动正常,但Azure的默认启动命令可能不匹配。登录Azure Portal,进入App Service -> 配置 -> 常规设置,将启动命令改为node .next/standalone/server.js,替代默认的npm start或其他命令——standalone模式必须直接启动该server文件,否则静态资源服务逻辑会失效。
  • 检查文件权限
    即便.next目录文件存在,也要确认App Service运行用户有读取权限。通过Kudu工具(https://<你的应用名>.scm.azurewebsites.net)进入终端,执行ls -l /home/site/wwwroot/.next/static查看权限,确保文件所有者/组为www-data或当前用户具备读权限。
  • 分析浏览器请求路径
    打开浏览器开发者工具的Network面板,查看失败资源的请求地址。如果是/_next/static/...这类路径返回404,对于Linux环境的App Service,standalone模式的server.js已内置静态资源服务,只要启动命令正确就应该能处理;如果是Windows环境,检查web.config是否有正确的路由规则。

什么时候需要考虑Nginx?

只有当上述排查全部完成仍无法解决,且你的应用需要复杂路由规则、反向代理或定制化静态资源缓存策略时,再考虑切换Nginx。多数Next.js standalone部署场景下,默认的Next Server完全够用,无需额外引入Nginx。

若确实要换Nginx,需:

  1. 在Azure App Service的Linux环境中使用自定义Docker镜像,或基于内置Nginx容器配置。
  2. 编写nginx.conf,将静态资源请求指向.next/static目录,其余请求反向代理到Next.js服务(默认端口3000)。
  3. 调整启动命令,确保先启动Nginx再启动Next.js server。

内容的提问来源于stack exchange,提问作者Newman

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 08:47:31