396 字
2 分钟
回源配置

场景需求#

CDN 或者全站加速等场景,可以设置 HTTP 回源,然后配合 IP 地址列表,实现仅允许对应 IP 访问源站,阻断非法访问。

EdgeOne#

[!info] 免费版不支持控制台操作,所以这里借助脚本 + API

nginx 配置如下:

server {
# default_server 表示如果有其他域名指向这个IP,也都由这个配置处理
# 只要IP白名单通过,这里就无脑响应
listen 80 default_server;
# _ 是一个常见的习惯用法,代表“匹配所有域名”或“不关心域名”
server_name _;
root /var/www/files;
# 引入之前的 IP 白名单脚本生成的配置文件
include /etc/nginx/edgeone_ips.conf;
location / {
autoindex on;
}
}

编写更新脚本 /usr/local/bin/update_edgeone_ips.sh

#!/bin/bash
# 定义文件路径
API_URL="https://api.edgeone.ai/ips"
CONF_FILE="/etc/nginx/edgeone_ips.conf"
TEMP_FILE="/tmp/edgeone_ips.tmp"
echo "1. 开始下载 IP 列表..."
# --http1.1: 强制使用旧协议,防止卡死
# -s: 静默模式 (不显示进度条)
# -S: 如果报错则显示错误信息
curl -sS --http1.1 "$API_URL" > "$TEMP_FILE"
# 检查是否下载到了内容(文件是否存在且大小大于 0)
if [ ! -s "$TEMP_FILE" ]; then
echo "❌ 下载失败:文件为空。"
exit 1
fi
echo "2. 格式化并生成 Nginx 配置..."
# 使用 awk 提取非空行的第一列,拼接成 allow 语句
awk 'NF {print "allow " $1 ";"}' "$TEMP_FILE" > "$CONF_FILE"
# 追加 deny all
echo "" >> "$CONF_FILE"
echo "deny all;" >> "$CONF_FILE"
echo "3. 重载 Nginx..."
# 检查配置无误后重载
nginx -t && systemctl reload nginx
echo "✅ 完成!"
# 清理临时文件
rm -f "$TEMP_FILE"

赋予执行权限后,设置定时任务:

Terminal window
0 3 */3 * * /usr/local/bin/update_edgeone_ips.sh
支持作者
支付宝收款码
支付宝
微信收款码
微信
回源配置
https://blog.085404.xyz/posts/回源配置/
作者
Sun2ot
发布于
2026-01-03
许可协议
CC BY-NC-SA 4.0

分享文章

生成精美分享图或复制链接,与更多人分享本文。

继续阅读

沿着主题读

基于共同的标签与分类

换条路线

从其他文章中稳定抽取

最后更新于 ,距今已过 249

部分内容可能已过时