{"@context":"https://schema.org","@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"name":"首页","item":"https://www.clwaf.com/"},{"@type":"ListItem","position":2,"name":"帮助文档","item":"https://www.clwaf.com/help"},{"@type":"ListItem","position":3,"name":"接入第一个站点","item":"https://www.clwaf.com/help/first-site"}]}

4. 接入第一个站点

这一章是整份文档最关键的一节。配错这里,WAF 要么不生效,要么直接把客户业务打挂。

4.1 先理解一件事:监听端口和域名是两个独立概念

很多人第一次配置会卡在这里。先看清楚:

字段含义举例
listen_portWAF 自己监听的端口。流量打到这个端口,WAF 才开始处理80
domains打到这个端口的请求里,哪些域名归这个站点管shop.example.com
upstreams匹配上之后,转发给哪个源站192.0.2.10:8080

所以完整链路是:

用户访问 http://shop.example.com
        ↓
DNS 解析到 WAF 服务器 IP
        ↓
请求打到 WAF 的 80 端口  ← listen_port
        ↓
WAF 看 Host 头是 shop.example.com  ← domains 匹配
        ↓
转发给 192.0.2.10:8080  ← upstreams

两个要点:

  1. listen_port 是 WAF 的端口,不是源站的端口。 源站端口写在 upstreams 的 addr 里。
  2. 多个站点可以共用同一个 listen_port。 引擎按端口去重监听,80 端口只起一个 listener,用 Host 头分流到不同站点。所以你有 5 个站,全都是 listen_port=80,只靠 domains 区分。

4.2 添加站点前的准备

检查项怎么确认
源站能正常访问在 WAF 服务器上 curl -I http://192.0.2.10:8080,能返回 200/301 才行
WAF 端口没被占用ss -lntp | grep :80,有 Nginx 就先停掉,WAF 要独占
DNS 已切到 WAFping shop.example.com 解析结果应是 WAF 服务器 IP
防火墙已放行80/443 对公网开放,后台端口 49463 仅对管理 IP 开放

不要先切 DNS 再配站点。 反过来:先配好站点、验证通过,最后再切 DNS。否则切过去的瞬间就是全站不可用。

4.3 添加站点

站点管理 → 添加站点,按下面填。

站点管理列表
新增站点表单

基本信息

字段必填说明
站点名称是只用于后台区分,不参与流量匹配。建议写业务含义,如「云帆商城」
域名是多个用英文逗号分隔。精确匹配,不支持通配符(详见 4.5)
监听端口是WAF 对外端口,通常是 80 或 443
状态是启用 / 禁用

源站配置

upstreams 是 JSON 数组:

[{"addr":"192.0.2.10:8080","weight":1}]
项说明
addr源站地址,IP:端口
weight权重。免费版只支持 1 个源站,权重填 1 即可;多源站加权是 Pro 能力
源站配置

如果源站是 HTTPS 且用自签证书,打开「跳过上游证书校验」(upstream_skip_verify),否则会握手失败。

防护配置

字段取值说明
启用 WAF 防护开 / 关关了就是纯反向代理,不做任何拦截
防护方式js / captchajs=JS 挑战,captcha=人机验证(滑块等)
验证模板slider 等免费版只有静默验证和滑块
JS 挑战时长0 / 1 / 3 / 5 秒见下方说明

JS 挑战时长怎么选,这是最容易选错的:

档位实际行为适合什么站
0透明注入,用户完全无感。后台异步评分,评分不过则下一次请求触发 1 秒挑战推荐首选。正常用户零打扰,脚本照样拦
1用户停留 1 秒后放行一般站点
3停留 3 秒攻击明显的站
5停留 5 秒极少数被打得很惨的场景,正常用户会明显感到卡顿

js_delay 填 0 和填 1 是完全不同的机制,不是「0 秒就是 1 秒」。填 0 走的是透明注入 + 异步评分路径。

客户端 IP 判定(最容易被忽略、后果最严重)

client_ip_mode 决定 WAF 认为「访客 IP」是哪个:

值含义什么时候用
1取 TCP 连接的对端地址(RemoteAddr)WAF 直接对公网时用它(默认)
2取 X-Forwarded-For 的第 N 个(client_ip_index,1=真实客户端)前面套了 CDN 或 Nginx 时
3取指定 Header(client_ip_header)云厂商自定义头,如 CF-Connecting-IP

这一项填错的后果:如果你的 WAF 前面还有一层 CDN,而 client_ip_mode 还是 1,那么所有访客在 WAF 眼里都是 CDN 节点的 IP —— CC 限频会把全站用户当成同一个攻击者,一次限频就是所有人一起被拦。

判断方法:配好站点后访问一次,看「攻击日志」里记录的 client_ip 是不是你自己的真实 IP。如果是 CDN 的 IP,就回来改这一项。

其他

字段说明
记录原始日志关掉可省磁盘。免费版本身不存原始日志,此项对免费版无效
站点 Logo拦截页上显示的图标
备注给自己看的说明
API 路径格式 /api/* 或 /v1/*,支持通配符。留空则由 WAF 根据 Accept 头自动判断。多数情况留空即可
上传目录逗号分隔。只有命中这些目录的请求才做 shell 文件名深检,留空表示全局扫描

4.4 生效与验证

生效时间

保存后不需要重启任何进程。引擎每 5 秒轮询一次站点变更,最多 5 秒自动生效。

验证流量真的过了 WAF

按顺序做,三步都能过才算接好了:

第一步:请求数在涨

后台「仪表盘」看今日请求数,刷新你的站点首页几次,数字应该增长。不增长说明流量没进来。

第二步:故意触发一次拦截

在浏览器访问:

http://shop.example.com/?id=1' union select 1,2,3--

如果返回的是 WAF 的拦截页(而不是源站的页面或 404),说明规则链在工作。

第三步:日志里有记录

「日志审计 → 攻击日志」应该出现刚才这条,类型是 SQL注入,动作 block。

如果三步都不过

现象原因处理
请求数不涨,页面正常DNS 还没切过来,或端口没对上dig shop.example.com 确认解析到 WAF;ss -lntp 确认端口在监听
页面打不开(502/超时)源站地址写错或源站不可达在 WAF 服务器上 curl 源站地址
页面打不开(连接被拒)listen_port 被占用,引擎没起来看 runtime/log/wafd/waf.out.log
能打开但请求数不涨域名没匹配上,请求没归到这个站点核对 domains 拼写,见 4.5
所有请求都报错证书配置问题(HTTPS 站点)检查 cert_path / key_path 文件是否存在且可读

4.5 域名匹配规则(必读)

引擎的匹配逻辑是去端口后精确比对,等价于下面这段:

请求 Host 去掉端口  ==  domains 里逗号分隔的某一项
域名绑定配置

由此推出三条硬规则:

你写的结果
shop.example.com只匹配这一个域名,www.shop.example.com 不匹配
shop.example.com,www.shop.example.com两个都匹配,要逐个列出来
*.example.com不生效。不支持通配符,会被当成字面量

所以泛解析场景(a.example.com、b.example.com 都要走 WAF)必须把每个子域名都写进去。

另外:

4.6 多站点共用 80 端口的正确姿势

假设你有三个站,都想走 WAF:

站点listen_portdomains
云帆商城80shop.example.com,www.shop.example.com
企业官网80demo.example.com
后台接口8081api.example.com

云安全组千万不要放行引擎的高位端口(如 8081)。这类端口是内部转发用的,暴露出去等于绕过了前面的防护策略。只放行业务的 80/443 和后台端口。

4.7 HTTPS 站点

如果站点要跑 HTTPS:

  1. 打开「启用 SSL」
  2. 填证书路径 cert_path(如 /usr/local/waf/cert/shop.pem)和私钥路径 key_path(如 /usr/local/waf/cert/shop.key)
  3. 证书文件必须是 服务器本地路径,不是上传内容

引擎在一个端口上按 SNI 自动选择证书。所以同端口多站点的 HTTPS 也能共存,每个站点配自己的证书即可。

证书不存在或加载失败时,该端口会自动降级为纯 HTTP,不会起不来。现象就是 HTTPS 访问失败但 HTTP 正常 —— 遇到这个先查证书路径。


下一步:5. 防护配置

双11 首发 · 限时 5 折
5折
首发专享限量 100 份 · 定金 ¥10 锁名额
日常价 ¥2,998¥1,499首发直降 ¥1,499
距定金截止仅剩
00天00时00分00秒

* 首发价仅限本次双11预售期,明年双11恢复日常价

0.028023s