首先个人版和基础版本都是没有实现源站点防护的,需要自己想办法实现,于是可以基于文档提供的IP地址,定期执行脚本更新

docker版本前提:

1:若是docker版本,需要将edgeone_ips.conf文件挂载到docker中,并且确保nginx可以正确访问到edgeone_ips.conf文件

1、新建update_edgeone_ips.sh脚本

#!/bin/bash

# EdgeOne IP列表API,根据文档自行更改
API_URL="https://api.edgeone.ai/ips?version=v4&area=global"

# Nginx配置文件路径 根据自己的路径修改
NGINX_CONF_DIR="nginx_conf"
IP_CONF_FILE="edgeone_ips.conf"

# 获取最新的EdgeOne IP列表
echo "Fetching latest EdgeOne IPs..."
curl -s $API_URL > /tmp/edgeone_ips.txt

# 检查是否成功获取到IP列表
if [ $? -ne 0 ] || [ ! -s /tmp/edgeone_ips.txt ]; then
    echo "Failed to fetch IP list."
    exit 1
fi

# 更新Nginx IP访问控制文件
echo "Updating Nginx IP configuration file..."
echo "# EdgeOne IP Access Control" > $IP_CONF_FILE
while read -r ip; do
    echo "allow $ip;" >> $IP_CONF_FILE
done < /tmp/edgeone_ips.txt
echo "deny all;" >> $IP_CONF_FILE

# 重载Nginx配置,使用Docker命令 根据自己需求修改容器名,若没有使用docker稍作修改简化便可。
echo "Reloading Nginx configuration in Docker container..."
docker exec nginx nginx -s reload

echo "Update completed."

2、设置定时任务

将定时任务设置为每天凌晨 3 点执行。使用 crontab 命令编辑任务:

sudo crontab -e

在末尾添加

0 3 * * * /bin/bash /文件路径/update_edgeone_ips.sh >> /日志路径/update_edgeone_ips.log 2>&1

这将确保脚本每天凌晨 3 点执行,并将日志写入 /var/log/update_edgeone_ips.log 文件。

3、调整 Nginx 配置

在你的 Nginx 配置文件中引用 edgeone_ips.conf 文件。在主配置文件添加一行 include

    # 引用EdgeOne IP访问控制文件
    include /文件路径/edgeone_ips.conf;

4、赋予脚本执行的权限

chmod +x /文件路径/update_edgeone_ips.sh

这样,就可以实现自动更新 EdgeOne 的 IP 列表到 Nginx 配置,并通过定时任务自动更新,从而提高源站的安全性。

结尾

执行/bin/bash /文件路径/update_edgeone_ips.sh,测试脚本是否成功。

观察输出内容,确认以下几点:

  • IP列表是否成功获取:脚本应显示“Fetching latest EdgeOne IPs...”,并成功写入 IP 配置文件 /文件路径/edgeone_ips.conf

  • Nginx配置文件是否更新:在 /文件路径/edgeone_ips.conf 中查看是否已正确写入 allow IP 列表和 deny all; 规则。

  • Nginx是否重载成功:脚本运行时应显示“Reloading Nginx configuration in Docker container...”且无报错。注:若无docker可以不用理会,主要是查看是否重载成功

并且排查问题也可以查看日志:cat /日志文件路径/update_edgeone_ips.log