为了保证网站安全,可以在网站前增加一个 WAF(Web 应用防火墙)
来进行防护。如果使用宝塔云 WAF 的话就需要多机部署并且还需要额外开通云 WAF 功能,这些对于个人来说成本太高了!
免费的雷池社区版不香吗?但很多个人用户又是通过宝塔面板进行管理的,这就导致雷池和主机 Nginx
有冲突问题,那怎么办呢?本文将介绍如何在单机部署下雷池和 Nginx
共存。
环境 | 要求 |
---|---|
操作系统 | Linux |
CPU 指令架构 | x86_64(支持 ssse3 指令集) |
Docker | 20.10.14 版本以上 |
Docker Compose | 2.0.0 版本以上 |
最低资源需求 | 1 核 CPU / 1 GB 内存 / 5 GB 磁盘 |
这里列出来的是雷池所需要的环境,宝塔支持的环境和操作系统可以在宝塔官网查询
对于宝塔安装本文不进行赘述,官网上都有详细的说明了
部署完宝塔之后还需要通过宝塔安装以下软件:
Nginx
Docker
安装完成之后 网站
和 Docker
可以看到宝塔这两个可以正常工作
bash -c "$(curl -fsSLk https://waf-ce.chaitin.cn/release/latest/setup.sh)"
我这里使用在线脚本进行安装,但是由于我的环境中的 Docker
是根据操作系统二进制编译的,并没有 docker compose
命令,但是 docker-compose
是正常的。
因此可以通过修改雷池脚本中的docker compose
命令,先下载雷池的脚本:
curl -o sl.sh https://waf-ce.chaitin.cn/release/latest/setup.sh
然后可以在宝塔中修改脚本文件
修改完成之后可以通过以下命令执行雷池部署脚本
bash sl.sh
出现这个提示代表雷池安装成功
为了通过域名来访问雷池,需要在宝塔中对雷池添加一个反向代理
代理的目标是 https://localhost:9443
通过浏览器打开宝塔配置的域名,成功看到了雷池页面!
虽然雷池实际上已经内置了 Tengine
,可以直接接管 80
端口,但是因为单机上已经安装了 Nginx
,它本身就监听了该端口,那么雷池无法继续监听这个端口。
虽然我有查到可以通过修改(宝塔安装的) Nginx
目录下 /www/server/panel/vhost/nginx/
配置文件(0.default.conf
和phpfpm_status.conf
)中 Nginx
监听端口改为非 80
端口。
但是实际上可能还需要修改所有的已有的网站的配置文件。如果你使用宝塔对网站进行更改配置之类的操作,宝塔还会重新覆盖你的变更导致恢复成监听 80
端口,这又是一个隐藏的问题。
因此,我采用了以下方法(经过了一层转发,性能可能有所下降):
以客户端访问 test.xx.com
为例:
由于雷池是通过 Docker
部署的,其中雷池默认的配置文件中是有独立的容器网络的,那么 localhost
就不是宿主机本身的网络,因此宿主机的网络可以通过容器的所属网关来表示宿主机的网络。
这里以部署静态网页项目为例
需要部署的静态网页的地址是 test.xx.com
,那么这里要避开这个域名,因为待会儿需要配置转发域名,所以可以添加前/后缀方式,我这里是 test-o.xx.com
接下来按照前面提到过的 添加反向代理
的方式继续添加(转发到雷池):
好了,现在应该能够访问静态网页了:
Q:如果我的网站有多个域名怎么办?
A:可以先添加其他的域名,和前面的步骤一样,只需要加入前/后缀,之后再添加一个新的代理,发送域名
填写这个带有前/后缀的域名
还没有评论,来说两句吧...