API Firewall环境变量与apifw.yaml配置完整参考:30+参数逐项讲解
2026/8/23 10:21:02 网站建设 项目流程

API Firewall环境变量与apifw.yaml配置完整参考:30+参数逐项讲解

【免费下载链接】api-firewallFast and light-weight API proxy firewall for request and response validation by OpenAPI specs.项目地址: https://gitcode.com/gh_mirrors/ap/api-firewall

API Firewall(Wallarm 开源 API 防火墙)是一款快速、轻量的 API 代理防火墙,核心功能是基于 OpenAPI 规范对请求和响应做双重校验。它的每个配置项都支持三种等价写法:apifw.yaml 配置文件环境变量APIFW_前缀)和命令行参数。本文带你逐项读懂 30+ 个参数,一次配通。

配置三件套:apifw.yaml、环境变量、命令行

方式特点适用场景
apifw.yaml结构化、可读性好本地部署、Docker 挂载卷
环境变量无需落盘、易被容器识别K8s、Helm 部署
命令行参数优先级最高、便于调试临时覆盖单个参数

📌 所有环境变量的键名 = 配置项名转大写 + 下划线,并加APIFW_前缀。例如ModeAPIFW_MODEURLAPIFW_URL

全局参数:选择工作模式与日志

参数环境变量默认值说明
ModeAPIFW_MODEPROXY运行模式:PROXY(代理校验)/API(API 校验)/GRAPHQL
LogLevelAPIFW_LOG_LEVELINFO日志级别:TRACEDEBUGINFOWARNINGERROR
LogFormatAPIFW_LOG_FORMATTEXT日志格式:TEXTJSON(方便 ELK 采集)

💡 新手建议:先用DEBUG级别跑一遍,确认无误后切回INFO

Server 组:监听端口与连接控制

源码定义见internal/config/server.go,共 10 个参数:

参数环境变量默认值说明
APIHostAPIFW_URLhttp://0.0.0.0:8282防火墙监听地址
HealthAPIHostAPIFW_HEALTH_HOST0.0.0.0:9667健康检查端口(K8s liveness 用)
ReadTimeoutAPIFW_READ_TIMEOUT5s读请求超时
WriteTimeoutAPIFW_WRITE_TIMEOUT5s写响应超时
ReadBufferSize8192读缓冲区大小(字节)
WriteBufferSize8192写缓冲区大小(字节)
MaxRequestBodySize4194304最大请求体 4MB,防大文件打爆内存
DisableKeepalivefalse关闭长连接(调试抓包时有用)
MaxConnsPerIP0(不限)单 IP 最大并发连接数
MaxRequestsPerConn0(不限)单连接最大请求数

Backend 组:保护的后端 API 怎么连

这是参数最多的一组(源码见internal/config/backend.go),决定流量如何转发到你的真实 API:

参数默认值说明
Backend.URLhttp://localhost:3000/v1/后端 API 根地址
Backend.RequestHostHeader转发时替换 Host 头
Backend.InsecureConnectionfalse跳过 TLS 证书校验(自签证书环境)
Backend.RootCA自定义根证书路径
Backend.MaxConnsPerHost512与后端的最大并发连接
Backend.DialTimeout200ms建连超时,调低可快速摘除故障节点
Backend.MaxResponseBodySize0(不限)限制从后端读取的响应体大小
Backend.DeleteAcceptEncodingfalse删除 Accept-Encoding,避免压缩体干扰校验
Backend.HealthCheckInterval30s后端健康检查间隔
Backend.MaxIdleConnDuration10s空闲连接保活时长

🛡️ 令牌校验(Oauth 子组)

参数默认值说明
Oauth.ValidationTypeJWT校验方式:JWTIntrospection(RFC 7662)
Oauth.JWT.SignatureAlgorithmRS256JWT 签名算法
Oauth.JWT.PubCertFileRS 类算法的公钥证书文件
Oauth.JWT.SecretKeyHS 类算法的密钥
Oauth.Introspection.Endpoint内省服务地址
Oauth.Introspection.RefreshInterval10m内省令牌缓存刷新周期

校验模式三参数:BLOCK / LOG_ONLY / DISABLE

这是 API Firewall 最核心的三个开关(定义于internal/config/proxy.go):

  • RequestValidation(必填):请求校验模式
  • ResponseValidation(必填):响应校验模式
  • CustomBlockStatusCode:拦截时返回的状态码,默认403
  • AddValidationStatusHeader:在响应头标记校验结果,便于灰度观察

✅ 经典灰度路径:先设LOG_ONLY观察日志 → 确认无误后切BLOCK

其他高频参数:

参数环境变量默认值说明
APISpecsAPI_SPECS必填OpenAPI 规范文件路径
APISpecsCustomHeaderAPI_SPECS_CUSTOM_HEADER从请求头动态取规范(多租户)
PassOptionsRequestsPASS_OPTIONSfalse放行 CORS 预检请求
SpecificationUpdatePeriodAPIFW_SPECIFICATION_UPDATE_PERIOD0热更新规范的周期,如1m

ModSecurity WAF 规则接入

在 API 校验之外叠加 OWASP 核心规则集(源码见internal/config/modsec.go):

参数环境变量说明
ModSecurity.ConfFilesMODSEC_CONF_FILESWAF 配置文件列表
ModSecurity.RulesDirMODSEC_RULES_DIR自动加载目录下所有*.conf规则
ModSecurity.RequestValidationMODSEC_REQUEST_VALIDATIONWAF 请求拦截模式
ModSecurity.ResponseValidationMODSEC_RESPONSE_VALIDATIONWAF 响应拦截模式

安全四件套:IP 白名单与 Token 黑名单

参数默认值说明
Denylist.Tokens.File泄露 Token 黑名单文件(.db)
Denylist.Tokens.HeaderName/CookieName从哪个头 / Cookie 取 Token 比对
Denylist.Tokens.TrimBearerPrefixtrue自动剥离Bearer前缀
AllowIP.FileIP 白名单文件
AllowIP.HeaderName从自定义头取真实客户端 IP(防 CDN 后 IP 失真)

DNS 缓存与 TLS 证书

源码见internal/config/dns.gointernal/config/config.go

参数默认值说明
DNS.Nameserver.Host系统默认指定上游 DNS
DNS.Nameserver.Port/Proto53/udp可改tcp防丢包
DNS.Cachefalse开启后降低解析延迟
DNS.FetchTimeout1m批量拉取缓存超时
DNS.LookupTimeout1s单次解析超时
TLS.CertsPathcerts证书目录
TLS.CertFilelocalhost.crt证书文件名
TLS.CertKeylocalhost.key私钥文件名

GraphQL 模式专属参数

进入GRAPHQL模式后,以下参数变为必填(源码见internal/config/graphql.go),专门防 GraphQL 常见攻击:

参数说明
MaxQueryComplexity查询复杂度上限,防组合爆炸
MaxQueryDepth最大嵌套深度,防深层 DoS
MaxAliasesNum最大别名数,防别名轰炸
NodeCountLimit单次查询最大字段节点数
BatchQueryLimit批量查询数量上限
DisableFieldDuplication禁止重复字段
Introspection是否允许 Schema 自省
Playground/PlaygroundPath开启内置调试页面及路径
WSCheckOrigin/WSOriginWebSocket 来源白名单校验

API 模式专属参数

API模式不代理流量,只做校验(定义于internal/config/api.go):

参数环境变量默认值说明
UnknownParametersDetectionAPIFW_API_MODE_UNKNOWN_PARAMETERS_DETECTIONtrue检测规范外的未知参数
DBVersionAPIFW_API_MODE_DB_VERSION0内部规范库版本
MaxErrorsInResponseAPIFW_API_MODE_MAX_ERRORS_IN_RESPONSE0响应中最多返回的错误条数

监控与其他参数

参数环境变量默认值说明
Metrics.EnabledMETRICS_ENABLEDfalse开启 Prometheus 指标
Metrics.HostMETRICS_HOST0.0.0.0:9010指标暴露端口
Metrics.EndpointNameMETRICS_ENDPOINT_NAMEmetrics指标路径
ShadowAPI.ExcludeListSHADOW_API_EXCLUDE_LIST404影子 API 检测忽略的状态码
ShadowAPI.UnknownParametersDetectionSHADOW_API_UNKNOWN_PARAMETERS_DETECTIONtrue影子 API 未知参数检测
Endpoints按端点细化校验:PATH\|REQ\|RESP

API Firewall 开源项目功能总览

完整配置示例速查

完整 PROXY 模式样例(docs/include/apifw-yaml-example.md):

mode: "PROXY" RequestValidation: "BLOCK" ResponseValidation: "LOG_ONLY" # 灰度期先只记日志 CustomBlockStatusCode: 403 APISpecs: "openapi.yaml" PassOptionsRequests: true Server: APIHost: "http://0.0.0.0:8282" HealthAPIHost: "0.0.0.0:9667" Backend: URL: "http://localhost:3000/v1/" DialTimeout: "200ms" HealthCheckInterval: "30s" TLS: CertsPath: "certs" CertFile: "localhost.crt" CertKey: "localhost.key" ModSecurity: RulesDir: "/etc/coraza" RequestValidation: "LOG_ONLY"

Docker 环境变量写法参考demo/docker-compose/docker-compose-api-mode.yml

environment: APIFW_MODE: "api" APIFW_URL: "http://0.0.0.0:8080" APIFW_HEALTH_HOST: "0.0.0.0:9667" APIFW_LOG_LEVEL: "info"

新手避坑清单

  1. ⚠️RequestValidationResponseValidation是必填项,漏写会直接启动失败
  2. ⚠️GRAPHQL模式下复杂度、深度等 6 个限制参数均为必填
  3. ✅ 后端用自签证书时,记得同时设置InsecureConnection: true或提供RootCA
  4. ✅ 生产环境建议MaxConnsPerIP+MaxRequestBodySize双保险,防慢连接与内存耗尽
  5. ✅ 上线路径:LOG_ONLY观察 1~2 天 →BLOCK全量拦截

掌握以上 30+ 参数,你就能把 API Firewall 从"能跑"调到"跑得好"。先按官方示例跑通 PROXY 模式,再按业务逐个叠加 WAF、白名单与监控配置即可。

【免费下载链接】api-firewallFast and light-weight API proxy firewall for request and response validation by OpenAPI specs.项目地址: https://gitcode.com/gh_mirrors/ap/api-firewall

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询