
crowdsecurity/openrestycrowdsecurity/crowdsec-openresty 是一个基于 OpenResty 官方镜像构建的 Docker 镜像,集成了 CrowdSec Lua Bouncer 组件。该镜像旨在与 CrowdSec 安全引擎配合使用,提供 Web 层的实时安全防护能力,能够根据 CrowdSec 决策自动拦截*** IP 地址或触发验证码验证,保护后端服务免受请求。
stream(流式)和 live(实时)两种工作模式,适应不同防护需求ban)cscli 工具生成 Bouncer API 密钥:
保存生成的 API 密钥,用于后续配置shellsudo cscli bouncers add <bouncer名称> # 例如:sudo cscli bouncers add myOpenRestyBouncer
shelldocker run -d -p 8080:80 \ -e API_URL=<CROWDSEC_LAPI_URL> \ # CrowdSec 本地 API 地址(如 [***] -e API_KEY=<CROWDSEC_LAPI_KEY> \ # 生成的 Bouncer API 密钥 --name openresty crowdsecurity/crowdsec-openresty
假设生成的 API 密钥为 abcdefghijklmnopqrstuvwxyz,CrowdSec LAPI 地址为 [***]:
shelldocker run -d -p 8080:80 \ -e API_URL=[***] \ -e API_KEY=abcdefghijklmnopqrstuvwxyz \ --name openresty crowdsecurity/crowdsec-openresty
创建 crowdsec-openresty-bouncer.conf,示例内容:
iniAPI_URL=[***] API_KEY=abcdefghijklmnopqrstuvwxyz CACHE_EXPIRATION=1 # 缓存过期时间(秒) BOUNCING_ON_TYPE=ban # 处理的决策类型 REQUEST_TIMEOUT=0.2 # LAPI 请求超时(秒) UPDATE_FREQUENCY=10 # 流式模式拉取频率(秒) MODE=stream # 工作模式 CAPTCHA_PROVIDER=recaptcha # 验证码提供商 SITE_KEY=your_recaptcha_site_key SECRET_KEY=your_recaptcha_secret_key
shelldocker run -d -p 8080:80 \ -v /path/to/your/crowdsec-openresty-bouncer.conf:/etc/crowdsec/bouncers/crowdsec-openresty-bouncer.conf \ --name openresty crowdsecurity/crowdsec-openresty
创建 docker-compose.yml:
yamlversion: '3' services: openresty-crowdsec: image: crowdsecurity/crowdsec-openresty ports: - "8080:80" environment: - API_URL=[***] # 假设 CrowdSec LAPI 在同一网络中名为 crowdsec-lapi - API_KEY=abcdefghijklmnopqrstuvwxyz - MODE=stream - UPDATE_FREQUENCY=10 volumes: # 可选:挂载自定义 Nginx 配置 - ./nginx/conf.d:/etc/nginx/conf.d depends_on: - crowdsec-lapi # 需确保 CrowdSec LAPI 服务已定义
| 环境变量 | 描述 | 默认值 | 示例值 |
|---|---|---|---|
API_URL | CrowdSec 本地 API (LAPI) 的 URL | - | [***] |
API_KEY | 用于访问 LAPI 的 Bouncer API 密钥 | - | abcdefghijklmnopqrstuvwxyz |
CACHE_EXPIRATION | 仅 live 模式:决策缓存过期时间(秒) | 1 | 5 |
CACHE_SIZE | 缓存中可存储的最大决策数量 | 1000 | 2000 |
BOUNCING_ON_TYPE | Bouncer 需处理的决策类型 | ban | ban,challenge |
REQUEST_TIMEOUT | 向 LAPI 发送请求的超时时间(秒) | 0.2 | 0.5 |
UPDATE_FREQUENCY | 仅 stream 模式:从 LAPI 拉取决策的频率(秒) | 10 | 30 |
MODE | Bouncer 工作模式:stream(流式拉取)或 live(实时查询) | stream | live |
CAPTCHA_PROVIDER | 验证码提供商,可选值:recaptcha、hcaptcha、turnstile | recaptcha | hcaptcha |
SITE_KEY | 验证码提供商的站点密钥 | - | 6LeIxAcTAAAAAJcZVRqyHh71UMIEGNQ_MXjiZKhI(reCAPTCHA 测试密钥) |
SECRET_KEY | 验证码提供商的密钥 | - | 6LeIxAcTAAAAAGG-vFI1TnRWxMZNFuojJ4WifJWe(reCAPTCHA 测试密钥) |
| 卷路径 | 描述 |
|---|---|
/etc/crowdsec/ | CrowdSec 配置文件目录,可挂载自定义 Bouncer 配置文件或其他 CrowdSec 配置 |
| 文件路径 | 描述 |
|---|---|
/etc/crowdsec/bouncers/crowdsec-openresty-bouncer.conf | Bouncer 主配置文件,可通过挂载自定义文件覆盖默认配置 |
/etc/nginx/conf.d | Nginx 配置目录,包含加载 CrowdSec Bouncer Lua 库的配置 |
/usr/local/openresty/lualib/plugins/crowdsec | CrowdSec Lua Bouncer 库文件路径 |



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