NextJS v13生产环境_data接口404但直接访问正常求助
NextJS 13生产环境_data目录AJAX请求404问题排查提示
我有一个部署在自建Kubernetes集群的NextJS(v13)应用,生产环境中多数来自_data目录的AJAX JSON数据请求返回404,但直接在浏览器中加载这些URL却不会出现404错误。开发版本一切正常,网站地址为https://sportsdemy.com。不确定从何处开始调试,希望能得到提示或方向。
以下是我的NextJS配置文件:
/** @type {import('next').NextConfig} */ const nextConfig = { reactStrictMode: true, images: { domains: [ 'media.api-sports.io', 'media-2.api-sports.io', 'media-3.api-sports.io', ], }, experimental: { swcMinify: true, }, compiler: { styledComponents: true, }, output: 'standalone', }; module.exports = nextConfig;
404错误截图:
直接访问可正常获取JSON的URL示例:https://sportsdemy.com/_next/data/lgSmKzzVjSPr2y95PaCfz/matches/falcons-vs-marimoo/90120.json?slug=falcons-vs-marimoo&matchId=90120
排查方向
- 对比请求头差异:抓包查看AJAX请求和直接浏览器访问的请求头(如
Accept、Referer),K8s的Ingress或反向代理可能对特定请求头的请求做了错误路由 - 检查静态文件部署完整性:进入K8s Pod,查看容器内
_next/data目录是否存在对应JSON文件,确认部署时静态资源是否完整同步 - 验证Ingress路由规则:检查自建K8s的Ingress配置(比如Nginx Ingress),看是否对
_next/data路径有rewrite、路径匹配等规则,导致AJAX请求被拦截或转发错误 - 排查缓存机制:如果使用了CDN或集群内缓存组件,检查缓存规则是否缓存了旧的404响应,或者静态数据的缓存策略是否冲突
- 查看NextJS日志:查看Pod内NextJS的运行日志,确认静态数据生成(如
getStaticProps)过程中是否有报错,导致部分数据文件未生成 - 检查路径大小写一致性:确认AJAX请求的路径和实际文件系统中的路径是否存在大小写差异,部分K8s容器的文件系统是区分大小写的
内容的提问来源于stack exchange,提问作者Sisir
相关产品推荐
相关产品推荐

