原文:https://www.boilog.com/archives/339
前言
最近把面板换成了国内公司出的但是开源的`1panel`,跑容器也是挺符合心里需求的,
主界面也挺干净整洁。看到第三方应用库有个免费`WAF`,然后又上了开源了但没完全开源的`长亭雷池WAF`。
记录一下在同一台机子上`长亭雷池WAF`搭配默认`openresty`的用法。
1. 调整openresty容器网络
需要将`openresty`修改为桥接网络模式。且修改`https`外部映射为其他端口如`1443`。
注意:改桥接端口之后,反向代理的思路就和使用`Nginx Proxy Manager`一样了,
- 不能写`127.0.0.1:端口`来反向代理了。
点击应用参数修改`docker-compose.yml`,重建`openresty`。
[ol]
version: '3'
services:
openresty:
image: openresty/openresty:latest #这里镜像注意对应自己的架构平台
container_name: ${CONTAINER_NAME}
restart: always
networks:
- 1panel-network
ports:
- "${PANEL_APP_PORT_HTTP}:80"
- "1443:1443"
volumes:
- ./conf/nginx.conf:/usr/local/openresty/nginx/conf/nginx.conf
- ./conf/fastcgi_params:/usr/local/openresty/nginx/conf/fastcgi_params
- ./conf/fastcgi-php.conf:/usr/local/openresty/nginx/conf/fastcgi-php.conf
- ./log:/var/log/nginx
- ./conf/conf.d:/usr/local/openresty/nginx/conf/conf.d/
- ./www:/www
- ./root:/usr/share/nginx/html
- /etc/localtime:/etc/localtime
labels:
createdBy: "Apps"
networks:
1panel-network:
external: true
[/ol]复制代码
2. 修改站点监听端口
站点正常配置,开启`https`啥的。
进入站点文件配置,修改`https`监听端口为`1443`,与外部端口一致。
可以按`Ctrl F`批量替换。其他配置可以不用动。
3. 雷池WAF添加站点
3.1 添加第三方库
然后应用商店安装`雷池WAF`
1Panel 应用商店的非官方应用适配库:https://github.com/okxlin/appstore
以默认`1Panel`安装在`/opt/`路径下为例子,如果不是按需修改以下。
3.1.1 国内网络
`1panel`计划任务类型`Shell 脚本`的计划任务框里,添加并执行以下命令,或者终端运行以下命令,
[ol]
git clone -b localApps https://ghproxy.com/https://github.com/okxlin/appstore /opt/1panel/resource/apps/local/appstore-localApps
cp -rf /opt/1panel/resource/apps/local/appstore-localApps/apps/* /opt/1panel/resource/apps/local/
rm -r /opt/1panel/resource/apps/local/appstore-localApps
[/ol]复制代码
然后应用商店刷新本地应用即可。
3.1.2 国际互联网络
`1panel`计划任务类型`Shell 脚本`的计划任务框里,添加并执行以下命令,或者终端运行以下命令,
[ol]
git clone -b localApps https://github.com/okxlin/appstore /opt/1panel/resource/apps/local/appstore-localApps
cp -rf /opt/1panel/resource/apps/local/appstore-localApps/apps/* /opt/1panel/resource/apps/local/
rm -r /opt/1panel/resource/apps/local/appstore-localApps
[/ol]复制代码
然后应用商店刷新本地应用即可。
3.2 雷池WAF添加站点
- 一种是直接添加普通容器端口做上游,`雷池WAF`监听`443`端口,上传证书即可。
- 另一种就是搭配`openresty`。
具体方式是如下:
- 添加上游服务为`https://127.0.0.1:1443`
- 域名填写与`openresty`站点一致
- `雷池WAF`监听`443`端口
- 正常上传证书
这样子就正常添加了,正常网站配置还是由`openresty` 提供,`雷池WAF`做个下游。
4. 关于SSL证书持续
`雷池WAF`社区版本这边还没证书夹,每添加一个站点就需要上传证书。
然后命名也是随机产生。想要使访问站点的`SSL`证书正常,还是得不断将签发的证书将旧证书文件替换掉。
这里用`acme.sh`签发的来替换。
具体的对应站点`SSL`证书对应可以查看配置获取。
具体文件路径在类似如下文件夹里
[ol]
/opt/1panel/apps/local/safeline/safeline/data/resources/nginx/sites-enabled
[/ol]复制代码
打开查看配置文件获取具体对应证书的名字。
[ol]
# 配置文件示例
server {
listen 0.0.0.0:443 ssl;
server_name www.example.com;
ssl_certificate /etc/nginx/certs/agicaikcgbac__.example.com-fullchain.cer;
ssl_certificate_key /etc/nginx/certs/shcvogagbaovga__.example.com.key;
location = /forbidden_page {
internal;
root /etc/nginx/forbidden_pages;
try_files /default_forbidden_page.html =403;
}
[/ol]复制代码
如上所示则可以获得证书文件文件名如下:
- agicaikcgbac__.example.com-fullchain.cer
- shcvogagbaovga__.example.com.key
则替换`雷池WAF`证书的命令可以写为
[ol]
# safeline-www.example.com
cp /root/.acme.sh/*.example.com_ecc/fullchain.cer /opt/1panel/apps/local/safeline/safeline/data/resources/nginx/certs/agicaikcgbac__.example.com-fullchain.cer
cp /root/.acme.sh/*.example.com_ecc/*.example.com.key /opt/1panel/apps/local/safeline/safeline/data/resources/nginx/certs/shcvogagbaovga__.example.com.key
[/ol]复制代码
也可以顺手替换一下`openresty`创建的站点的证书
[ol]
# openresty-www.example.com
cp /root/.acme.sh/*.example.com_ecc/fullchain.cer /opt/1panel/apps/openresty/openresty/www/sites/www.example.com/ssl/fullchain.pem
cp /root/.acme.sh/*.example.com_ecc/*.example.com.key /opt/1panel/apps/openresty/openresty/www/sites/www.example.com/ssl/privkey.pem
[/ol]复制代码
然后将这两个替换证书的命令添加到计划任务列表就行了。