首页/安全/安全设备配置速查/nginx 集成 ModSecurity
WAF 防护73 条

nginx 集成 ModSecurity

通过 ngx_http_modsecurity_module 把 ModSecurity 嵌入 nginx,实现开源 WAF 能力;编译或安装对应模块后加载规则。

安全设备配置速查安全更新于 2026-10-13

nginx 集成 ModSecurity 是什么

开源方案里常见做法是把 ModSecurity 通过 ngx_http_modsecurity_module 模块嵌入 nginx:nginx 负责接入与转发,ModSecurity 负责在请求与响应上执行规则。前提是 nginx 编译或安装了该模块——很多发行版默认包不含它,需要额外安装或用动态模块方式加载。集成后的工作分三块:加载模块、启用并指定规则文件、验证请求被规则命中。

基本信息

前提条件nginx 需带 ModSecurity 模块,或支持动态加载 .so 模块
配置位置主配置文件加载模块,server 或 location 段启用与指定规则文件
规则来源OWASP CRS 等开源规则集,配合自定义规则文件
生效方式修改配置或规则后重载 nginx
性能考虑请求体检测与正则匹配会带来额外开销

典型使用场景

  • 中小站点自建开源 WAF,替代或补充商业 WAF
  • 已有 nginx 反向代理架构,直接在链路上加检测
  • 测试环境验证规则集与业务的兼容性
  • 自定义规则开发与调试:本地验证 SecRule 写法
  • 故障排查:确认请求被拦是否由 ModSecurity 规则引起
  • 性能评估:开启检测前后对比响应时间与吞吐

nginx 配置示例

nginx 配置示例
# 加载模块(版本与路径按实际安装情况填写)
load_module modules/ngx_http_modsecurity_module.so;
server {
    listen 443 ssl;
    # 启用 ModSecurity 并指定规则入口文件
    modsecurity on;
    modsecurity_rules_file /etc/nginx/modsec/main.conf;
    location / {
        proxy_pass http://backend;
    }
}
# 修改后用 nginx -t 检查语法,再重载服务

集成检查项

检查项正常表现异常表现
模块加载nginx -V 或配置无报错启动时报未知指令错误
规则文件worker 进程可读启动失败或规则不生效
启用范围指定 server 或 location 生效部分站点未启用检测
日志输出审计日志与错误日志有记录命中规则但无日志
性能响应时间变化在可接受范围大文件上传或高频请求明显变慢
规则文件路径与权限要正确:nginx worker 进程需要可读权限,路径写错时通常表现为启动失败或规则完全不生效。
规则更新后需要重载 nginx 才会生效,只在磁盘上替换文件而不重载会造成「已经更新了」的错觉。

易错点

  • nginx 未编译或未安装该模块时配置报错,上去就直接改配置而没确认模块存在
  • 规则更新后未重载 nginx,新规则实际上没有生效
  • 规则文件权限或路径错误,启动失败或检测静默失效
  • 只在部分虚拟主机启用,其他站点处于无检测状态却无人知晓
  • 未评估性能开销,上传大文件或高并发时才暴露响应变慢

数据来源与参考

  • nginx 官方文档:ModSecurity 模块
  • ModSecurity 参考手册
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌