如何停止雷池 WAF 服务?
进入雷池安装目录,然后执行以下命令停用雷池 WAF 服务
复制
docker compose down
如何卸载雷池 WAF?
进入雷池安装目录,调用 compose 来停用雷池 WAF 服务
复制
docker compose down
注意,请不要支持手动 kill 雷池容器
然后删除雷池相关文件即可
复制
bash
rm -rf "雷池安装目录"
雷池 WAF 安装目录在哪?
雷池安装目录是在安装时指定的,默认位于以下路径。
复制
bash
/data/safeline
如果你的雷池正在运行,可以通过以下命令查看安装目录。
复制
bash
docker compose ls
雷池 WAF 控制台的默认密码是什么?
雷池 WAF 在安装时会随机生成初始化密码,请查看安装时终端中输出的内容。
雷池 WAF 控制台密码忘记怎么办?
如果忘了雷池 WAF 控制台 admin 账户的密码,可以执行以下命令进行重置。
复制
bash
docker exec safeline-mgt resetadmin
雷池 WAF 支持透明代理部署模式吗?
雷池 WAF 社区系列产品不支持透明代理部署模式。
雷池企业版硬件产品支持透明代理部署模式,可以联系长亭销售做进一步了解。
雷池 WAF 支持透明桥接部署模式吗?
雷池 WAF 社区系列产品不支持透明桥接部署模式。
雷池企业版硬件产品支持透明桥接部署模式,可以联系长亭销售做进一步了解。
雷池 WAF 支持路由代理部署模式吗?
雷池 WAF 社区系列产品不支持路由代理部署模式。
雷池企业版硬件产品支持路由代理部署模式,可以联系长亭销售做进一步了解。
雷池 WAF 可以防护 DDoS 攻击吗?
DDoS 细分为多种类型,基于 HTTP 协议的 CC 攻击、HTTP 慢速攻击等方式都属于雷池 WAF 可以防护的范畴,除此以外,非 HTTP 协议的 DDoS 攻击不适用于雷池 WAF。
雷池 WAF 可以在 Windows 上部署吗?
雷池 WAF 目前只支持在 Linux 服务器上部署。
雷池 WAF 是否支持 WebSocket ?
雷池 WAF 默认支持对 websocket 流量的转发,暂不支持检测 websocket 中传输的攻击行为。
为什么偶现少量攻击请求被放行?
检测引擎(Detector)高负载或者单个请求太复杂等场景导致检测超时,为了不影响正常业务,雷池会默认放行这些请求。将检测引擎配置为最大性能模式可缓解此问题。
Docker 镜像拉不下来
在安装和升级的时候,卡在 Docker 拉镜像步骤的可以尝试下述方式解决
- 更换 Docker 镜像源
- 给 Docker 配置代理
- 切换至华为镜像仓库,修改雷池安装目录中
.env
文件中的IMAGE_PREFIX
字段,将chaitin
修改为swr.cn-east-3.myhuaweicloud.com/chaitin-safeline
使用 docker compose
还是 docker-compose
?
docker compose
和 docker-compose
是 docker
不同版本的编排工具,推荐使用 docker compose
来管理雷池 WAF。
雷池个人版和专业版和商业版有什么区别
个人版具有基础的WAF流量监测能力,保护网站不被黑客入侵。
专业版在个人版本基础上升级,额外增加安全能力和管理能力。
商业版在专业版的基础上升级,额外增加更多的安全能力,且能满足等保合规的需要。
统计中的 "拦截次数" 和攻击日志数量对不上
攻击事件是记录攻击的事件(包括黑名单),如果是高频限制或者人机拦截,不会记录攻击事件
"拦截" 可能是由多种原因导致的,不仅仅包含因为攻击导致的拦截, 具体可能引起拦截的原因如下:
- 发现 Web 攻击,被雷池拦截
- 访问频率太高,被雷池拦截
- 人机验证未通过,被雷池拦截
- 身份验证未通过,被雷池拦截
- 发现畸形 HTTP 流量,被雷池拦截
- 请求的域名和雷池站点中配置的域名不一致,被雷池拦截
雷池获取源 IP 不正确
在默认情况下,雷池会通过 tcp socket 连接来获取客户端的源 IP。
若雷池和客户端之间还存在其他设备(如 CDN、AD、LB 等),会影响雷池获取正确的源 IP 信息。
通常,代理设备都会将真实源 IP 通过 HTTP Header 的方式传递给下一跳设备。
如下方的 HTTP 请求,在 X-Forwarded-For
和 X-Real-IP
两个 Header 中都包含了源 IP:
复制
makefile
GET /path HTTP/1.1
Host: waf-ce.chaitin.cn
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7)
X-Forwarded-For: 110.123.66.233, 10.10.3.15
X-Real-IP: 110.123.66.233
X-Forwarded-For
是链式结构,若请求经过了多级代理,这里将会按顺序记录每一跳的客户端 IP。
如果请求中没有包含存在源 IP 的相关 Header,则需要修改前置设备的配置,将源 IP 通过 HTTP Header 传递给雷池。
遇到这种情况,打开雷池控制台的 "防护站点-全局配置" 页面,将选项 "源 IP 获取方式" 的内容修改为 "从 HTTP Header 中获取",并在对应的输入框中填入对应的 Header 即可(分析原请求日志获得)。


上游服务器获取源 IP 不正确
通过雷池对上游服务器进行保护之后,上游服务器在获取源 IP 时可能会拿到雷池设备的 IP,在这种情况如何获取真实的源IP?
雷池默认透传了源 IP,放在 HTTP Header 中的 X-Forwarded-For
里面。
如果上游服务器是 NGINX,添加如下配置就可以。
复制
ini
set_real_ip_from 0.0.0.0/0;
real_ip_header X-Forwarded-For;
注意 ngx_http_realip_module 模块用于将客户端地址和可选端口更改为发送的指定的头字段。 > 默认情况下不构建此模块,可在构建时使用 --with-http_realip_module 配置参数启用
如果不是 NGINX,则需要自行配置解析相关字段。
雷池日志中的攻击地址是内网 IP
雷池界面上展示的攻击地址是通过 HTTP 请求中的 {protocol}://{host}{:port}{path}
字段拼接而成。
我们比较常见的 http 协议是 http 1.1
和 http 2.0
,这些协议都可以正确的展示攻击地址。
然后在非常古老的 http 1.0
或 http 0.9
协议中不包含 host
字段,因此无法正确展示攻击地址。在这种情况下雷池会用自己的 IP 地址代替 host
来显示。
在线安装失败
- 检查是否手动关闭防火墙
- 检测配置是否符合最低的配置要求,docker版本等信息
- 如果连接 Docker Hub 网络不稳,导致镜像下载失败(超时),需自行解决网络问题
docker hub 默认使用国外节点拉取镜像,可以自行搜索配置国内镜像加速源,或使用 离线安装 方式
安装时遇到报错处理方法
报错 nginx: [emerg] invalid IPv6 address in resolver
需要把 /etc/resolv.conf 对应的那一行 ipv6 地址删除,然后 docker restart safeline-tengine
即可。
报错:ERROR: Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?
需要安装 docker。尝试 curl -fLsS https://get.docker.com/ | sh
或者 Install Docker Engine。
报错:failed to create network safeline-ce
safeline-ce 是雷池部署时候创建的 network,出现类似报错,先重启下 dockerd 之后重试
不同环境重启命令: sudo systemctl restart docker sudo service docker restart
注意:直接杀死dockerd进程并重启可能会导致正在运行的容器突然停止,请谨慎使用 {.is-warning}
报错:docker compose v2 not found, unable to deploy
需要安装 docker compose v2
。尝试 Install Docker Compose。
报错: safeline-tengine 出现 Address already in use
docker logs -f safeline-tengine
容器日志中看到 Address already in use
信息。
端口冲突,根据报错信息中的端口号,排查是哪个服务占用了,手动处理冲突。
雷池占用的端口:
- 9443: 管理端,可以自定义,详情查看下方文档
- 65443:内置服务,不可修改
报错:safeline-mgt-api 出现 Operation not permitted
docker logs -f safeline-mgt-api
容器日志中看到 runtime/cgo: pthread_create failed: Operation not permitted
报错,这个错误一般会在 docker 20.10.9 及以下发生。
- 最推荐的方式是升级 docker 到最新版本尝试解决这个问题。
- 或您的系统支持配置 seccomp (执行
grep CONFIG_SECCOMP= /boot/config-$(uname -r)
输出CONFIG_SECCOMP=y
则为支持), 则可以在雷池工作目录下载 seccomp 并且编辑 compose.yaml 文件, 在 management 下加入如下配置项,然后执行docker compose down && docker compose up -d
来尝试解决这个问题:
复制
ini
security_opt:
- seccomp=./seccomp.json
docker报错:net/http: TLS handshake timeout
docker使用时,通过默认镜像地址检索或者拉取镜像时,仓库下载速度较慢,时常报错"net/http: TLS handshake timeout"。 解决问题的核心策略是保持网络正常,将拉取地址改为国内镜像仓库,如果使用单位网络,可能是因网络问题,换个热点。
报错:safeline-pg 出现 Operation not permitted
docker logs -f safeline-pg
容器日志中看到 Operation not permitted
报错。
可能是您的 docker 版本过低,升级 docker 到最新版本尝试一下。
报错 Pool overlaps with other one on this address space
docker 网络冲突了,需要修改安装目录 /data/safeline/.env 的 SUBNET_PREFIX 为其他网段
其他奇怪的报错比如:It does not belong to any of this network's subnets...等等
卸载以后重新安装一次
NAS(群晖)安装遇到的问题
-
docker compose up -d报错Bind mount failed: 'xxxxx' does not exists.
由于群晖的 docker 不会自动创建挂载目录,所有挂载目录都需要手动创建,执行mkdir -p 挂载目录进行创建
-
nginx 错误日志安装目录/logs/nginx/error.log报错connect() to unix:/resources/detector/snserver.sock failed (13: Permission denied)
检查文件夹权限,所有的文件夹权限需要为755即drwxr-xr-x,可以执行ls -l 文件夹路径进行查看,chmod 755 文件夹路径进行修改,比如安装目录为/data/safeline,则/data以及/data/safeline以及目录下的所有子文件夹权限都需要为755
如何自定义 SafeLine 安装路径?
基于最新的 compose.yaml
,你可以手动修改 .env
文件的 SAFELINE_DIR
变量。
雷池和业务服务可以部署到同一台机器中吗?
可以,但是不建议,机器负载将高于分开部署。
如何修改 SafeLine 后台管理的默认端口?比如:本机 :9443
已经被别的服务占用
使用 ss -antlp
确认端口使用情况,找到未被占用端口
修改在安装目录(默认 safeline)下的隐藏文件.env
文件,你可以手动添加 MGT_PORT
变量到 .env
文件。
文件修改后,需要等重启才会生效。
在安装目录(默认 safeline)下执行
docker compose down && docker compose up -d
如果是docker-compose 需执行
docker-compose down && docker-compose up -d
推荐配置
需根据业务情况进行选择,带宽推荐与源站的带宽保持一致
- 雷池最低允许在 1C1G 的服务器上运行
- 如果业务 QPS 低于 50,流量吞吐低于 1Mbps/s,推荐 1C2G 及以上配置
- 如果业务 QPS 低于 200,流量吞吐低于 5Mbps/s,推荐 2C4G 及以上配置
- 如果业务 QPS 低于 800,流量吞吐低于 20Mbps/s,推荐 4C8G 及以上配置
如需防护更高流量的业务,请参考 雷池选型参考 页面中的 性能与配置 部分
关于升级后兼容问题
版本差距过大会可能会发生升级后数据不兼容导致服务器无法起来
跨多个版本(超过1个大版本号)升级做好数据备份,遇到升级失败可尝试重新安装解决
升级提示目录不对
在错误的目录下执行(比如 safeline 的子目录)会导致无法升级成功。
切换目录到安装目录下再次执行升级,默认目录为:/data/safeline。
配置的备份与恢复(还原)
升级过程担心配置受到影响
备份:备份安装目录的全部文件,默认目录为:/data/safeline(停容器后备份最佳)
恢复(还原):把备份的内容放回安装目录执行 docker compose down && docker compose up -d
,重新启动雷池
注意:恢复备份的时候需修改.env 文件内的 IMAGE_TAG 参数为需要恢复的版本号
升级过程中下载超时
网络问题导致,建议等待网络稳定或者尝试离线升级。
升级后系统信息显示 api 错误或者 docker 状态显示异常
重启 docker
升级后原配置不生效
极少数情况出现,一般删掉重新配置即可
升级后清理不需要的镜像
docker images | grep chaitin-safeline | grep -v none | awk '{print $1":"$2}' | xargs docker rmi
是否需要每一个版本都升级
可以查看版本更新日志确新版本更新内容是否业务需要
若无需要,建议每隔一段时间升级一次(不需要每次都更新)
关于版本号说明
A.B.C A 代表特大功能更新 B 代表小功能更新 C 代表 bug 修复
攻击日志中有来自公网的内网请求
攻击日志的请求地址是根据 http 协议组装的,在下面的情况下会出现此情况
- 攻击者伪造了 Http Header 的 Host 字段
- 攻击者使用的 Http 1.0 协议,此协议中没有 Host 字段,WAF 会使用机器的内网 IP 补全
查看容器日志根据错误日志进行排查(通用)
- 查看容器状态
复制
docker ps
- 查看tengine日志
复制
docker logs -f safeline-tengine
- 查看mgt日志
复制
docker logs -f safeline-mgt
根据错误日志的信息进行排查
报错 database disk image is malformed
可能是某种情况下导致sqlite数据库损坏了
在 resources/luigi 目录下,全删了,再重启雷池就好了
如何重启雷池的全部容器?
如果是docker-compose,需要自行替换成docker-compose命令
1.在安装的safeline目录下执行命令:docker compose down ,全部停止 2.在安装的safeline目录下执行命令:docker compose up -d,全部启动
雷池如何数据迁移(更换机器)
准备好需要迁移的雷池环境,版本保持和原环境一致
1.两个环境都停止容器
2.复制原环境的safeline目录 ,覆盖新环境的safeline目录(或者直接把原safeline目录删除)
3.在新的safeline目录内,使用命令重启新环境的雷池容器,迁移完成
请检查防火墙规则, tengine 容器状态和日志
如果站点报错如上,说明tengine容器可能出现问题,需要自行排查一下原因 可能原因:站点配置错误、雷池机器本地环境有问题等原因 排查方法: 1.使用docker ps,查看tengine容器的状态,确认是否healthy 2.使用docker logs -f safeline-tengine 查看tengine容器日志。根据日志内的报错信息自行解决问题
查看tengine容器日志如果有类似报错:172 22.222.4:1443/ani/open/ 相关错误
检查容器网络问题,因为雷池容器网络使用SUBNET_PREFIX=172.22.222
检测是否有本地防火墙规则或者其他情况导致容器无法正常连接
查看tengine容器日志如果有类似报错:[emerg] invalid IPv6 address in resolver "(fe80::e207:c2ff: feed:6684%ens192]* in /etc/nginx/nginx.conf:132
尝试手动删掉报错中的/etc/resolv.conf里面的那个ipv6
查看tengine容器日志如果有类似报错:Address already in use
可能有端口冲突了,尝试修改报错的端口监听情况
攻击测试时未记录攻击,并且访问记录为 0
检查是否直接访问了源站,没有走雷池的配置站点访问
上游访问异常
某些环境升级雷池或者安装雷池后配置站点会有上游访问异常的错误
检查一下 雷池机器的网能不能通,雷池mgt容器内的网是否通
如果mgt容器内网不通,说明容器网络出问题了,可以尝试重启docker解决
内网用户如何使用在线的威胁情报 IP?加白哪个域名?
威胁情报的云服务部署在百川云平台,域名是 https://challenge.rivers.chaitin.cn/
雷池部署在内网的师傅需要加白一下,就可以正常同步情报数据了。
如何记录所有访问雷池的请求 (如何开启访问日志)
应用详情设置直接开启,可以在线查看
手动修改配置
默认情况下雷池是并不会保存请求记录的,如果需要保存请求记录,可以修改waf的安装目录下的resources/nginx/nginx.conf
如图所示,去掉文件第 98 行的注释,删除第 99 行的内容,保存后运行命令检查配置文件
复制
bash
docker exec safeline-tengine nginx -t
检查应显示
复制
vbnet
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
最后应用配置文件
复制
bash
docker exec safeline-tengine nginx -s reload
配置生效后,访问日志将会保存至安装路径下的logs/nginx
注意:该操作会加快对硬盘的消耗,请定时清理访问日志
报错 failed to load html from: challenge.rivers.chaitin.cn
这个地址是百川服务器的地址,出现当前报错说明与百川服务器无法正常连接
可能原因:
- 访问的机器和百川服务器网络不通(内网需要加白)
- 当前访问机器被百川服务器拉黑(尝试攻击或者调试过人机验证页面,有过攻击行为的话会被拉黑)
- 百川服务器无响应(百川服务更新、机器本身异常等情况),人机可能无法使用(可以关闭人机功能等服务正常)
mgt 证书错误无法启动
在 waf 机器上执行下面的命令即可
复制
bash
docker exec safeline-mgt app/mgt-cli reset-cert
清理数据库中的统计信息和检测日志
注意:该操作会清除所有日志信息,且不可恢复
复制
bash
docker exec safeline-mgt cleanlogs
有多个防护站点监听在同一个端口上,匹配顺序是怎么样的
如果域名处填写的分别为 IP 与域名,那么当使用进行 IP 请求时,则将会命中第一个配置的站点

以上图为例,如果用户使用 IP 访问,命中 example.com。
如果域名处填写的分别为域名与泛域名,除非准确命中域名,否则会命中泛域名,不论泛域名第几个配置。

以上图为例,如果用户使用 a.example.com 访问,命中 a.example.com。 如果用户使用 b.example.com,命中 *.example.com。
自定义站点 nginx conf
雷池每次修改站点或者重启服务时,都会在waf的安装目录下的 resources/nginx/sites-enabled/ 重新生成 nginx conf 文件。因为没法"智能"合并用户自定义的配置和自动生成的配置。但是也还是有方式能持久化地添加一些 nginx conf,不会被覆盖。
每个 IF_backend_XXX
的 location 中都有 include proxy_params;
这一行配置,且 resources/nginx/proxy_params
这个文件不会被修改站点、重启服务等动作覆盖。2.1.0 版本之后支持 /etc/nginx/custom_params/backend_XXX;
可以自定义站点级的 nginx location 配置。
复制
ini
server {
location ^~ / {
proxy_pass http://backend_1;
include proxy_params;
include /etc/nginx/custom_params/backend_1;
# ...
}
}
所以只需要根据需求修改对应的文件就可以了。比如在 resources/nginx/proxy_params
里面增加如下配置,即可支持 X-Forwarded-Proto
:
复制
bash
proxy_set_header X-Forwarded-Proto $scheme;
修改完成后运行命令检查配置文件
复制
bash
docker exec safeline-tengine nginx -t
检查应显示
复制
vbnet
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
最后应用配置文件
复制
bash
docker exec safeline-tengine nginx -s reload
攻击日志中的域名不是我的网站
攻击日志中显示的域名字段是取的 HTTP Header 中的 Host,如果这个字段不存在,则默认使用目的 IP 作为域名。如果客户端修改了 HTTP Header 的 Host,那么这里显示的就是修改之后的。
放一张截图更容易理解,注意下面「请求报文」中的 Host 字段:

紧急恢复 tengine
问题表现:重启或升级后编辑任何站点配置都报错,后台 tengine 一直在重启。
可能原因是 tengine 配置在当前设备环境上不合法,导致 tengine 无法以原配置启动。 例如重启过程中网站端口被其他进程所占用、网站 dns 配置异常导致解析不到 IP 等。
解决方案:可以通过查看 tengine 容器的日志,排查问题,也可以使用安装目录下的 reset_tengine.sh
脚本重置 tengine 容器配置。
复制
bash
# 执行时间根据网站数量和配置情况而定, 请耐心等待
cd /data/safeline && bash reset_tengine.sh
执行成功后会有如下输出,此时可以尝试重新编辑/删除站点配置,观察是否正常。
复制
scss
[SafeLine] 是否重新生成 tengine 的所有配置 (Y/n)
重新生成 tengine 配置完成
证书续订是否会改变证书名称 ?
证书名称不会改变
内网需要加白哪些公网地址?
地址 | 端口 | 说明 |
---|---|---|
waf-ce.chaitin.cn | 443 | 搜索引擎爬虫白名单、左下角的更新提示 |
challenge.rivers.chaitin.cn | 443 | 恶意 IP 情报 |
safeline-cloud.chaitin.com | 50052 | 专业版/商业版的授权校验 |
acme-v02.api.letsencrypt.org | 443 | acme 证书申请 |
rivers.chaitin.cn | 443 | 百川推荐工具(浏览器使用) |
配置后攻击测试没有拦截记录
检查访问请求有没有真实经过雷池
配置后网站无法访问,排查思路
如果按照指引配置了站点,但配置的网站无法访问
优先搜索访问网站时请求对应的错误码,根据错误码提示进行排查
梳理问题可能存在的几个原因:
- 配置站点错误,ip 错误、端口冲突等
- 雷池端与配置的站点网络不通
- 访问雷池配置的站点端口网络不通,对于雷池端已配置的端口没有被开放访问(防火墙、安全组等)
- 同时存在其他错误的配置可能会导致新的配置一直不生效,检查有没有存在其他错误的配置
- 雷池本身的状态不正常,使用 docker ps 检查容器状态
- 雷池本身默认的反向代理配置与源站需求的配置不匹配,需要手动调整雷池的代理配置
注:还可以结合safeline-mgt和safeline-tengine两个容器的日志帮助排查
网站无法访问排查步骤
-
明确 "网站无法访问" 的具体表现:
-
如果
502 Bad Gateway tengine
:大概率是是雷池的上游服务器配置不正确,或者雷池无法访问到上游服务器,请继续按下面步骤排查。
-
如果请求能够返回但是十分缓慢
-
确认服务器负载是否正常,检查服务器的 CPU、内存、带宽使用情况
-
在客户端执行命令,检查雷池服务器与上游服务器的网络:
curl -H "Host: <雷池 IP>" -vv -o /dev/null -s -w 'time_namelookup: %{time_namelookup}\ntime_connect: %{time_connect}\ntime_starttransfer: %{time_starttransfer}\ntime_total: %{time_total}\n' http://<上游服务器地址>
- 如果 time_namelookup 时间过大,请检查 dns server 配置
- 如果 time_connect 时间过大,请检查雷池与上游服务器之间的网络状态
- 如果 time_starttransfer 时间过大,请检查上游服务器状态,是否出现资源过载情况
-
-
如果不是以上情况,继续下一步
-
-
在客户端执行
curl -v -H "Host: <域名或者IP>" http://<雷池 IP>:<雷池监听端口>
。如能获取到业务网站的响应,如图,并且站点的 "今日访问量" +1,说明雷池配置正确,网络正常如果浏览器无法访问,但这一步正常获取到响应,大概率是因为:
- 网站域名还没有切到雷池,浏览器测试时访问的是
http(s)://<雷池 IP>
,恰好业务服务上有 Host 验证,所以拒绝了该请求。这种情况需要修改本机 host,把域名解析到雷池 IP,再访问http(s)://<域名>
,才能准确测试 - 网站业务做了其他一些特殊处理。例如访问后 301 跳转到了其他地址,需要具体排查网站业务的响应内容
- 如果不能获取到响应,继续下一步
- 网站域名还没有切到雷池,浏览器测试时访问的是
-
在雷池设备上执行
curl -v -H "Host: <域名或者IP>" http://<雷池 IP>:<雷池监听端口>
。如能获取到业务网站的响应,并且站点上 "今日访问量" +1,说明雷池配置正确- 如果步骤 2 失败而这里成功,说明客户端到雷池之间的网络存在问题。请排查网络,保证客户端可访问到雷池,检测防火墙、端口开放等
- 如果不能获取到响应,继续下一步
-
在雷池设备上执行
curl -H "Host: <域名或者IP>" http://127.0.0.1:<雷池监听端口>
。如能获取到业务网站的响应,并且站点的 "今日访问量" +1,说明雷池配置正确- 如果步骤 3 失败而这里成功,且
telnet <雷池 IP> <雷池监听端口>
返回Unable to connect to remote host: Connection refused
,可能是被雷池设备上的防火墙拦截了。 - 排查操作系统本身的防火墙,还有可能是云服务商的防火墙。请根据实际情况逐项排查,开放雷池监听端口的访问
- 如果不能获取到响应,继续下一步
- 如果步骤 3 失败而这里成功,且
-
在雷池设备上执行
netstat -anp | grep <雷池监听端口>
确认端口监听情况。正常情况下,应该有一个 nginx 进程监听在0.0.0.0:<雷池监听端口>
。- 没有的话请通过社群或者 Github issue 提交反馈,附上排查过程。有的话继续下一步
-
在雷池设备上
curl -H "Host: <域名或者IP>" <上游服务器地址>
。如能获取到业务网站的响应,说明雷池设备和站点网络没有问题- 如果步骤 4 失败而这里成功,可能是配置错误,查看配置站点教程确认配置是否正确,如无法解决,请通过社群或者 Github issue 提交反馈,附上排查过程
- 如果这步失败,说明雷池和上游服务器之间的网络存在问题。请排查网络,确保雷池可以访问到上游服务器
配置完成后,测试时返回 400 Request Header Or Cookie Too Large
检查是否形成了环路,即:雷池将请求转发给上游服务器后,上游服务器又将请求转发回雷池。
重新修改配置后再次测试
配置完成后,过waf返回404
抓包对比过waf和不过waf的请求区别,是否雷池的反代转发内容出现变化
如果服务器有请求严格校验,可以手动修改雷池的nginx,参考下文的自定义修改nginx、
注意:雷池界面操作可能导致某些自定义被覆盖重置
配置站点报错
- 报错信息"nginx: [emerg] duplicate listen options for 0.0.0.0:80 in /etc/nginx/sites-enabled/IF_backend_4:10\nnginx: configuration file /etc/nginx/nginx.conf test failed\n: exit status 1"
主要是说明当前的配置与原有的配置冲突了,比如原有的站点使用80端口监听所有的域名
再次配置一个使用80监听所有域名就会报错,这里第二个80监听配置指定域名即可 - 报错信息 "listen tcp :80: bind: address already in use"
主要是说明配置的端口已经被其他非雷池的程序占用,比如例子中的被其他占用了80端口
找到占用80端口的程序,切换成其他端口,重新配置站点即可
宝塔、1panel面板与雷池一台机器出现占用端口问题
参考技术文档修改面板相关程序的端口占用
因为面板启用站点本身会占用80和443端口,所以需要专门调配置(不推荐)
调配置较复杂,可参考下文
宝塔面板部署雷池社区版教程
1panel部署雷池社区版教程