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

如何在Nginx中通过正则排除含/socket.io/的访问日志?

Nginx 配置排除含/socket.io/路径的访问日志

问题背景

用户的Nginx访问日志包含以下记录:

XX.XX.147.5 - - [20/Oct/2022:18:42:59 +0000] "GET /my-subfolder/readiness HTTP/1.1" 200 1496 "-" "EF-Strati-HealthCheck-Client/1.0" "11.16.133.0"
XX.XX.94.5 - - [20/Oct/2022:18:42:59 +0000] "POST /my-subfolder/some-path-to-exclude/socket.io/?EIO=4&transport=polling&t=OFsjAj9&sid=2Mufsq23xBh8FRLWAFtD HTTP/1.1" 200 2 "https://www.myapp-example.com/my-subfolder/home" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/105.0.0.0 Safari/537.36" "XXX,XXX,XXX,XXX"

希望排除路径中包含/socket.io/的访问日志,尝试了以下配置但无效:

location ~ /(.*)socket.io(.*)/ {
  access_log off;
}

仍会生成相关日志:

XX.XX.29.4 - - [20/Oct/2022:21:03:13 +0000] "GET /my-subfolder/some-path-to-exclude/socket.io/?EIO=4&transport=polling&t=OFtDAhA.0&sid=pxCY9pYkRXFp4ULZAAAS HTTP/1.1" 200 1 "https://www.myapp-example.com/my-subfolder/home" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/106.0.0.0 Safari/537.36" "XXX,XXX,XXX,XXX"

问题分析

  1. 正则特殊字符未转义:socket.io中的.是正则通配符(匹配任意单个字符),而非字面意义的点号,必须转义为socket\.io才能精确匹配目标路径。
  2. 多余的结尾斜杠限制:原配置中的(.*)/要求路径结尾必须带斜杠,但实际请求中socket.io后可能直接跟查询参数(?),路径部分到socket.io就结束,导致匹配失败。
  3. location匹配优先级冲突:如果已有其他优先级更高的location规则(比如前缀匹配),正则location可能无法被命中。

正确配置方案

方案1:正则location匹配(推荐)

调整正则表达式,去掉多余的结尾斜杠,转义点号,确保匹配所有包含/socket.io的路径:

location ~* /socket\.io {
    access_log off;
}
  • ~*表示不区分大小写匹配(可根据需求换成~启用大小写敏感)
  • 该规则会匹配所有URI中包含/socket.io的请求,无论其在路径的哪个位置

方案2:server块内条件判断

如果不想单独设置location,可在server块中通过if指令判断URI并关闭日志:

server {
    # 其他server配置...
    if ($uri ~* /socket\.io) {
        access_log off;
    }
    # 其他location配置...
}

注:Nginx中if指令需谨慎使用,但此类简单匹配场景是安全的。

方案3:精确匹配socket.io路径

若需要更精确的匹配(比如仅匹配/socket.io、/socket.io/或其后续子路径),可使用:

location ~* /socket\.io(/.*)?$ {
    access_log off;
}

该正则会匹配:

  • /socket.io
  • /socket.io/
  • /socket.io/xxx等后续路径

配置验证

修改配置后,执行以下命令检查语法并平滑重启Nginx:

nginx -t  # 验证配置语法正确性
systemctl reload nginx  # 平滑重启服务

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 19:56:07