本脚本用于通过腾讯云API获取EdgeOne服务的回源IP列表,并生成三种格式的配置文件:
cdn-real.conf - Nginx的set_real_ip_from配置
cdn-whitelist.conf - Nginx的geo模块配置
cdn-allow.conf - Nginx的allow/deny访问控制配置
Bash环境
jq工具(用于JSON处理)
openssl工具(用于签名生成)
sudo apt-get update
sudo apt-get install -y jq openssl
在使用脚本前,请修改以下配置参数:
SECRET_ID="YOUR_SECRET_ID" # 腾讯云SecretId
SECRET_KEY="YOUR_SECRET_KEY" # 腾讯云SecretKey
ZONE_ID="zone-xxxxxx" # EdgeOne站点Zone ID
REGION="ap-singapore" # 地域代码
wget https://cnb.cool/hsred/edgeone-ACL/-/git/raw/main/edgeone-acl.sh && ./edgeone-acl.sh [选项]
| 选项 | 描述 |
|---|---|
| --real | 仅生成cdn-real.conf |
| --whitelist | 仅生成cdn-whitelist.conf |
| --allow | 仅生成cdn-allow.conf |
| --all | 生成所有配置文件 |
| --output | <目录> 指定配置文件输出目录 |
| --check-update | 检查回源IP列表是否有更新 |
生成所有配置文件到当前目录:
./edgeone-acl.sh --all
生成特定配置文件到指定目录:
./edgeone-acl --real --whitelist --output /etc/nginx/conf.d
检查回源IP列表更新:
./edgeone-acl.sh --check-update
cdn-real.conf
包含所有回源IP段的set_real_ip_from指令,用于Nginx获取真实客户端IP。
cdn-whitelist.conf
使用Nginx的geo模块定义变量,标记来自CDN的请求。
cdn-allow.conf
包含允许访问的CDN IP段和默认拒绝规则,用于访问控制。
可以设置cron任务定期更新配置:
# 每天凌晨更新配置并重载Nginx
0 0 * * * /path/to/edgeone-acl.sh --all --output /etc/nginx/conf.d && nginx -s reload
请妥善保管API密钥,建议通过环境变量传递
确保脚本有执行权限:chmod +x edgeone-acl.sh
生成配置文件后,需要在Nginx配置中正确引用
脚本需要网络连接以访问腾讯云API
常见错误及解决方法:
权限不足:检查API密钥是否有足够权限
Zone ID错误:确认Zone ID是否正确
依赖缺失:确保已安装jq和openssl工具
网络问题:检查服务器网络连接是否正常
1.0.0 初始版本
1.1.0 添加更新检测功能
1.1.1 改进错误处理机制