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

Nginx仅能加载3个页面,其余页面返回200状态但报错

问题分析与解决方案

核心判断:限流并非来自Nginx

你的Nginx配置中limit_req触发时,默认会返回503状态码,同时在错误日志中生成类似limiting requests, excess: ...的限流记录。但当前报错返回200状态码+自定义JSON格式提示,且Nginx错误日志无对应记录,说明这个限流逻辑是由后端的Node.js服务(node2上游集群)返回的,和Nginx限流无关。

排查步骤

  • 检查Node服务的路由逻辑:重点核对/contact路径的处理代码,以及404 fallback的实现,确认是否存在针对这些路径的独立限流规则(比如基于IP、请求频率的限制);对比首页、图片页、评论页的路由配置,看这些页面是否被排除在限流规则之外。
  • 验证后端请求计数:在Node服务中添加日志,记录/contact和404请求的IP、请求时间、累计次数,确认是否真的触发了后端设定的阈值;测试时更换不同IP访问/contact,判断是否是单IP维度的限制逻辑。
  • 排除Nginx潜在影响:临时注释location /中的limit_req zone=one burst=20 nodelay;配置,重启Nginx后再次测试,彻底确认Nginx未参与此次限流拦截;同时可以在Nginx的access.log中添加$upstream_response_status字段,查看后端返回的状态码是否为200,验证请求确实完整到达了Node服务。

修复方向

  • 若后端存在特定路径的限流规则,调整阈值或将/contact、404页面加入限流白名单。
  • 检查后端限流逻辑是否存在bug(比如计数错误、时间窗口计算异常),导致正常请求被误拦截。
  • 若404页面的限流是爬虫或异常请求触发,优化后端404处理逻辑,避免无差别限流。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 13:03:12