博客 / 詳情

返回

1Panel上的免費WAF長亭雷池搭配openresty的用法

原文鏈接: 1Panel上的長亭雷池WAF搭配openresty的用法

前言

最近把面板換成了國內公司出的但是開源的1panel,跑容器也是挺符合心裏需求的,

主界面也挺乾淨整潔。看到第三方應用庫有個免費WAF,然後又上了開源了但沒完全開源的長亭雷池WAF

記錄一下在同一台機子上長亭雷池WAF搭配默認openresty的用法。

1. 調整openresty容器網絡

需要將openresty修改為橋接網絡模式。且修改https外部映射為其他端口如1443

注意:改橋接端口之後,反向代理的思路就和使用Nginx Proxy Manager一樣了,

  • 不能寫127.0.0.1:端口來反向代理了。

點擊應用參數修改docker-compose.yml,重建openresty

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

2. 修改站點監聽端口

站點正常配置,開啓https啥的。

進入站點文件配置,修改https監聽端口為1443,與外部端口一致。

可以按Ctrl F批量替換。其他配置可以不用動。

3. 雷池WAF添加站點

3.1 添加第三方庫

然後應用商店安裝雷池WAF

  • 1Panel 應用商店的非官方應用適配庫

以默認1Panel安裝在/opt/路徑下為例子,如果不是按需修改以下。

3.1.1 國內網絡

1panel計劃任務類型Shell 腳本的計劃任務框裏,添加並執行以下命令,或者終端運行以下命令,

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

然後應用商店刷新本地應用即可。

3.1.2 國際互聯網絡

1panel計劃任務類型Shell 腳本的計劃任務框裏,添加並執行以下命令,或者終端運行以下命令,

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

然後應用商店刷新本地應用即可。

3.2 雷池WAF添加站點

  • 一種是直接添加普通容器端口做上游,雷池WAF監聽443端口,上傳證書即可。
  • 另一種就是搭配openresty

具體方式是如下:

  • 添加上游服務為https://127.0.0.1:1443
  • 域名填寫與openresty站點一致
  • 雷池WAF監聽443端口
  • 正常上傳證書

這樣子就正常添加了,正常網站配置還是由openresty 提供,雷池WAF做個下游。

4. 關於SSL證書持續

雷池WAF社區版本這邊還沒證書夾,每添加一個站點就需要上傳證書。

然後命名也是隨機產生。想要使訪問站點的SSL證書正常,還是得不斷將簽發的證書將舊證書文件替換掉。

這裏用acme.sh簽發的來替換。

具體的對應站點SSL證書對應可以查看配置獲取。
具體文件路徑在類似如下文件夾裏

/opt/1panel/apps/local/safeline/safeline/data/resources/nginx/sites-enabled


打開查看配置文件獲取具體對應證書的名字。

# 配置文件示例
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;
    }
 

如上所示則可以獲得證書文件文件名如下:
– agicaikcgbac__.example.com-fullchain.cer
– shcvogagbaovga__.example.com.key

則替換雷池WAF證書的命令可以寫為

# 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

也可以順手替換一下openresty創建的站點的證書

# 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

然後將這兩個替換證書的命令添加到計劃任務列表就行了。

user avatar
0 位用戶收藏了這個故事!

發佈 評論

Some HTML is okay.