
crowdsecurity/lua-bouncer-pluginCrowdSec Lua Plugin 是一款与 Ingress Nginx 控制器配合使用的 Lua 插件(bouncer),用于集成 CrowdSec 安全防护系统。其核心用途是将 CrowdSec 生成的安全决策(如 IP 封禁、限流等)应用于 Ingress Nginx 层面,实现对入站流量的实时过滤和防护,有效阻止***请求访问后端服务。
多模式运行:支持两种工作模式
stream 模式:定期从 CrowdSec 本地 API(LAPI)拉取安全决策并缓存(默认模式)live 模式:实时查询 LAPI 验证每个请求的决策高效缓存机制:通过 lua_shared_dict 实现跨 Worker 进程的决策缓存,减少对 LAPI 的重复请求,提升性能
灵活的决策配置:可指定需要处理的决策类型(如 ban、captcha 等),支持自定义缓存过期时间、缓存大小和请求超时
配置方式多样:支持通过环境变量动态配置,或挂载自定义配置文件覆盖默认设置
插件支持两种配置方式,优先级为:挂载自定义配置文件 > 环境变量。
/etc/crowdsec/bouncers/crowdsec-openresty-bouncer.conf(适用于复杂配置)| 环境变量 | 描述 | 默认值 | 示例 |
|---|---|---|---|
API_URL | CrowdSec 本地 API(LAPI)的访问地址 | - | -e API_URL="[***]" |
API_KEY | 用于访问 LAPI 的认证密钥(需与 CrowdSec 服务端配置一致) | - | -e API_KEY="your_lapi_secret_key" |
CACHE_EXPIRATION | 仅 live 模式生效:决策缓存过期时间(秒) | 1 | -e CACHE_EXPIRATION="5" |
CACHE_SIZE | 缓存中可存储的最大决策数量 | 1000 | -e CACHE_SIZE="2000" |
BOUNCING_ON_TYPE | 需要处理的决策类型(如 ban、captcha 等) | ban | -e BOUNCING_ON_TYPE="ban,captcha" |
REQUEST_TIMEOUT | 向 LAPI 发送请求的超时时间(秒) | 0.2 | -e REQUEST_TIMEOUT="0.5" |
UPDATE_FREQUENCY | 仅 stream 模式生效:从 LAPI 拉取决策的频率(秒) | 10 | -e UPDATE_FREQUENCY="30" |
MODE | 工作模式:stream(定期拉取)或 live(实时查询) | stream | -e MODE="live" |
插件使用 Nginx 的 lua_shared_dict 共享内存区域存储决策缓存,默认大小为 50m。如需调整缓存大小,需通过 Ingress Nginx 的 ConfigMap 配置(参考 Ingress Nginx 文档),示例配置:
yaml# ingress-nginx ConfigMap 片段 apiVersion: v1 kind: ConfigMap metadata: name: ingress-nginx-controller namespace: ingress-nginx data: lua-shared-dicts: "crowdsec_cache 100m" # 调整缓存大小为 100m
以下为简化的 Docker 运行示例(实际场景中通常与 Ingress Nginx 容器集成):
bashdocker run -d \ --name crowdsec-lua-plugin \ -e API_URL="[***]" \ -e API_KEY="your_lapi_secret_key" \ -e MODE="stream" \ -e UPDATE_FREQUENCY="10" \ -e CACHE_SIZE="2000" \ -v /path/to/custom/config:/etc/crowdsec/bouncers/crowdsec-openresty-bouncer.conf \ # 可选:挂载自定义配置文件 crowdsecurity/crowdsec-lua-plugin:latest
注意:实际部署时需确保插件与 Ingress Nginx 控制器在同一网络,且 LAPI 地址可访问。
在 Kubernetes 环境中,通常通过 Helm 安装 Ingress Nginx 时集成该插件,关键配置项包括:
--set controller.extraEnvs 注入环境变量--set controller.config.lua-shared-dicts 调整缓存大小--set controller.extraVolumes 和 --set controller.extraVolumeMounts 挂载自定义配置文件| 卷路径 | 用途 |
|---|---|
/etc/crowdsec/ | 存放 CrowdSec 相关配置文件(如自定义 bouncer 配置) |
/usr/local/openresty/lualib/plugins/crowdsec(CrowdSec Lua 库文件)/etc/nginx/conf.d(加载插件和配置的 Nginx 配置文件)请阅读 贡献文档 了解代码规范和 PR 提交流程。
本项目基于 MIT 许可证开源,详见 LICENSE 文件。

manifest unknown 错误
TLS 证书验证失败
DNS 解析超时
410 错误:版本过低
402 错误:流量耗尽
身份认证失败错误
429 限流错误
凭证保存错误
来自真实用户的反馈,见证轩辕镜像的优质服务