CasWAF 与 Nginx 对比
Nginx 是Web服务器和反向代理,这两件事做得很好。CasWAF 是一个顺带做防火墙的反向代理。在 Nginx 前面加 WAF 通常意味着加 ModSecurity 或 Coraza、一套规则、证书续期的办法,以及请求被拦时看日志的地方。CasWAF 把这些放进一个程序,设置存在数据库里,再加管理界面、请求记录和单点登录。
一览
| CasWAF | Nginx | |
|---|---|---|
| 是什么 | 反向代理,带防火墙、管理界面和单点登录 | Web服务器和反向代理 |
| 防火墙 | 自带:IP、路径、频率、验证码规则,以及 Coraza 上的 SecLang | 不自带,要加 ModSecurity、Coraza 或 njs 和 Lua |
| 怎么配置 | 管理界面,设置存在 MySQL,所有节点共用 | 配置文件,改完 reload |
| 证书 | 手动上传,或按域名用 Let’s Encrypt 自动签发和续期 | Certbot 或手动放文件 |
| 管理界面、记录、看板 | 自带,按站点告警 | 没有,日志写到文件或日志系统 |
| 站点的单点登录 | 任何站点前面都可以加 Casdoor 登录,不用改应用 | 没有,要 auth_request 模块或外部服务 |
| 许可证 | Apache-2.0 | BSD-2-Clause,Nginx Plus 是付费产品 |
CasWAF 不一样的地方
不用拼模块就有防火墙
按 IP 段、国家、User-Agent 或路径拦截,按地址限流,验证码,这些在管理界面里都是规则类型。在 Nginx 上每一样都意味着另一个模块、另一个文件、又一次 reload。
改站点不用改文件
加域名、换证书、加跳转都是管理界面里的表单,几秒内所有网关节点生效。没有配置需要套模板、在服务器之间复制或手工校验。
看得见进来的流量
请求按站点记录,有按时间的流量看板,站点不响应时发邮件或短信。用 Nginx 时这是一条另外搭的日志链路。
在应用前面加登录
任何站点都可以放在 Casdoor 登录后面,不用改应用,多因素认证、LDAP 和第三方登录都来自 Casdoor。在 Nginx 上是 auth_request 加你自己写的一个服务。
多台机器,一份配置
节点连同一个数据库,服务同一批站点,这是常规用法,而不是一堆各自手工维护的配置。
Nginx 领先的地方
吞吐量和成熟度
Nginx 每核处理的流量更多,在生产里被调了二十年。CasWAF 是一个带数据库的 Go 程序,不声称能比。
作为Web服务器强得多
缓存、压缩、对缓冲和超时的精细控制、大规模静态文件服务、TCP 和 UDP stream,这些都是 Nginx 有而 CasWAF 没有的。
模块和文档
Nginx 的模块生态,以及关于它每个角落的写作量,都不是一个年轻项目能比的。
你已经在用它
如果 Nginx 跑得好好的,防火墙也不是你的问题,继续用是合理的答案。
怎么选
- 需要防火墙、管理界面和单点登录,又不想加模块:CasWAF。
- 要扛大量静态流量,或者需要缓存、stream、CasWAF 没有的模块:留着 Nginx,把 CasWAF 放在它或者它后面的应用前面。
- 管很多站点,想把它们放进一个管理界面:CasWAF。
- 习惯改配置文件,只要原始性能:Nginx。