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

AWS EKS下带OWASP规则ModSecurity的Nginx Ingress首次请求高延迟问题

排查思路
  • 优先验证IP信誉拦截功能影响:临时将crs-setup.conf中tx.do_reput_block参数值改为0,重启Ingress Controller Pod后测试首次请求延迟是否恢复正常,该功能默认会在新IP首次请求时查询远端IP信誉库,无本地缓存时会产生极高额外延迟。
  • 检查Pod资源使用情况:通过Kubernetes metrics或监控平台查看Nginx Ingress Controller Pod的CPU、内存使用率,确认是否存在CPU限流(throttle)现象,当前配置的100m CPU上限远低于ModSecurity+OWASP规则集的最低运行要求,极易触发限流导致请求排队。
  • 拆分请求耗时阶段:使用curl命令打印各阶段耗时,定位延迟发生在TCP/TLS握手阶段还是后端业务/ModSecurity处理阶段:
    curl -w "TCP握手耗时:%{time_connect}\nTLS握手耗时:%{time_appconnect}\n服务端处理耗时:%{time_starttransfer}\n总请求耗时:%{time_total}\n" -o /dev/null -s https://你的业务域名
    
  • 核查ModSecurity运行日志:查看ModSecurity debug日志的时间戳,确认首次请求的高耗时具体发生在哪个规则执行阶段,重点关注IP信誉查询、规则上报相关的日志条目。
  • 验证NLB与连接复用配置:检查NLB目标组的会话保持配置,同时确认Nginx是否开启了上游服务连接复用、TLS会话复用能力,避免每次新IP请求都需要重新建立全链路连接。
解决方案
  • 关闭非必要的IP信誉拦截功能:如果业务不需要基于公共IP信誉库的拦截能力,直接将crs-setup.conf中的setvar:tx.do_reput_block=1修改为setvar:tx.do_reput_block=0,可直接解决该场景下的首次请求高延迟问题。如果确实需要使用IP信誉能力,需配置本地IP信誉库缓存,避免每次请求都查询远端接口。
  • 调高Ingress Controller资源配额:将nginx-values.yaml中controller.resources的CPU limit至少调整为1000m,内存调整为1Gi,根据业务压测结果继续上调,避免因资源不足导致的请求排队延迟。
  • 降低ModSecurity日志开销:生产环境无需开启调试日志,将waf.conf中的SecDebugLogLevel从3调整为0,关闭不必要的日志写入,减少磁盘IO开销。
  • 关闭ModSecurity状态上报功能:waf.conf中的SecStatusEngine On会向ModSecurity官方上报运行统计数据,会产生额外的外网请求开销,无需使用的话改为SecStatusEngine Off即可。
  • 开启连接与会话复用能力:在nginx-values.yaml的controller.config下新增以下配置,减少建连开销:
    ssl-session-cache: "shared:SSL:10m"
    ssl-session-timeout: "10m"
    ssl-session-tickets: "on"
    keep-alive: "75"
    keep-alive-requests: "100"
    upstream-keepalive-connections: "128"
    upstream-keepalive-timeout: "60"
    upstream-keepalive-requests: "100"
    
  • 延长本地缓存有效期:如果保留IP信誉功能,可将crs-setup.conf中的SecCollectionTimeout参数从600适当调大,延长IP相关数据的本地缓存时间,减少重复查询频率。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.14 16:36:03