Nginx反向代理下Next.js App Router软导航失效,触发全页刷新
Next.js App Router 搭配 Nginx 反向代理时软导航失效问题
点击链接触发页面导航时,浏览器会执行全页刷新,而非SPA软导航。该问题仅出现在 Nginx 反向代理 + Next.js App Router 的组合场景中,以下场景下软导航均能正常工作:
- 本地访问(App Router、Pages Router 均可)
- 通过 Vercel 直接部署(App Router、Pages Router 均可)
- Nginx 反向代理 + Pages Router
经确认,该问题从 Next.js v13 版本起至今存在,即使是最新的预览版(canary)也未修复。
我的 Nginx 配置如下:
location / { proxy_pass <Vercel Vanity URL or NextJS built-in server in localhost> proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection 'upgrade'; proxy_set_header Host <Vercel Vanity URL or NextJS built-in server in localhost>; proxy_ssl_server_name on; proxy_cache_bypass $http_upgrade; }
可通过以下场景验证两种行为差异:
- ❌ Nginx反向代理Vercel上的App Router项目:触发全页刷新
- ✅ Nginx反向代理Vercel上的Pages Router项目:软导航正常
- ❌ Nginx反向代理自托管App Router项目(NextJS内置服务器):触发全页刷新
- ✅ Nginx反向代理自托管Pages Router项目(NextJS内置服务器):软导航正常
- ✅ 直接通过Vercel vanity URL访问App Router项目:软导航正常
- ✅ 直接通过Vercel vanity URL访问Pages Router项目:软导航正常
- ✅ 本地运行NextJS内置生产服务器(Pages/App Router均可):执行
next build && next start后访问http://localhost:3000,软导航正常
内容的提问来源于stack exchange,提问作者VanPersie
相关产品推荐
相关产品推荐

