
通过之前的设置与优化,我的WordPress个人网站打开速度已经很快,也相对安全,能抗一定力度的网络攻击了。

如果还想有大的提升,那就得加钱了。可咱的初心就是为了网站能长久运营,要尽可能的节约成本,加钱?那是不可能的!好在近期腾讯EdgeOne活动挺给力的,推出了完全免费的安全加速套餐,提供不计量的 CDN 流量和 DDoS 防护,开放全球节点(包含中国大陆)。这不花钱还能提升网站性能的服务,必须得用呀!
要是在过去,大部分个人站长都不会给网站上CDN服务的,原因不单单是贵,而是这东西用了的话,一不小心就会“破产”!搜索“CDN流量被刷”,能找到不少网站被刷流量导致CDN欠费的例子。EdgeOne免费版最大的优点就是提供不计量的 CDN 流量,不管消耗了多少CDN流量,都不需要站长支付一分钱,这简直是在向“赛博菩萨”Cloudflare看齐。可惜Cloudflare免费版在中国大陆没有节点,不做IP优选的话,对于面向国内用户的网站来说就是“减速器”,而EdgeOne免费版提供了包含中国大陆的全球节点,更适合中国宝宝体质,让国内用户访问更快!
对于那些服务器配置很高的网站来说,EdgeOne不过是锦上添花,让用户访问网页更快些。可对于咱们这种用1h1g服务器搭建WordPress个人网站的站长来说,简直是鸟枪换炮!把网站上大部分内容给EdgeOne缓存上,用户访问的内容将主要由EO提供,我们的服务器负载将变得非常低。腾讯的这一善举,相信会极大的提升国内站长的建站热情!
本篇文章将详细记录使用EdgeOne免费套餐,对我的个人网站:anjir.top,优化与加速的过程。
EdgeOne免费套餐?EdgeOne分国内站和国外站,绝大多数站长都是EO国内站用户,所以本文只考虑国内站用户会遇到的情景。国内站用户可通过兑换码获得免费套餐,兑换码获取方式如下:
方式一:参与免费套餐兑换码抽奖活动,活动页面:https://cloud.tencent.com/act/pro/eo-freeplan
方式二:EdgeOne 产品当前和国内部分KOL有合作,腾讯云开发者社区、B站、小红书等搜索关键词“EdgeOne”,找有兑换码的KOL获取
获取兑换码后,打开兑换页面:https://console.cloud.tencent.com/edgeone/package?cn_free_redeem=true,完成兑换即可。
如果你有多个域名,想获取多个EdgeOne免费套餐,可以先9.9元开1个月个人套餐,等个人版到期后,会自动降级为永久免费套餐。(截止本文发布时,该方法还有效,不保证未来一直有效)
在开始操作前,我们先理解一下接下来会发生什么:
1. 流量路径的改变:
2. 谁是“源站”?: 咱的那台 1核1G 的服务器,现在变成了 “源站”。EdgeOne 会从咱的源站拉取内容,然后缓存到离访客最近的节点上,再分发给访客。
3. SSL 证书的变化:
6. “域名管理”-“添加域名”,完成源站配置:
7. 为anjir.top、www.anjir.top添加 CNAME 记录。参考“配置指引”,删除之前的A解析,将我们的anjir.top网站cname解析到EdgeOne提供的记录值。同样的,www.anjir.top也参考前面那些步骤完成解析。最后点击“完成”。
8. 待部署完成,状态显示“已生效”后,HTTPS 配置,“编辑”-“HTTPS 证书配置”-“申请免费证书”-“确认”,然后等待几分钟,待HTTPS 配置显示:已配置,状态:已生效。
我的网站使用了Fail2ban进行安全防护,它通过监控日志文件自动识别并封禁恶意IP。经过我的配置后,所有流量都通过 EdgeOne 转发,在 Nginx access.log 日志里,记录的客户端 IP 将全部变成 EdgeOne 的节点 IP,这将导致 Fail2ban 的防护失效!
为了避免Fail2ban防护失效,我需要让 Nginx 能够“看穿”EdgeOne,记录下访客的真实 IP。
1.编辑 Nginx 主配置文件 nginx.conf:
nano /root/my_website/nginx/main-conf/nginx.conf2.在 http 块内,添加 real_ip 相关指令
http {
include /etc/nginx/mime.types;
default_type application/octet-stream;
# ======== 添加以下内容 ========
# 信任所有来自 EdgeOne 节点的请求
# EdgeOne 的 IP 段列表会更新,我们需要动态获取
set_real_ip_from 0.0.0.0/0; # 简单起见,可以先信任所有来源,后面再改
# 告诉 Nginx 从哪个头信息中获取真实 IP
# EdgeOne 使用 X-Forwarded-For
real_ip_header X-Forwarded-For;
real_ip_recursive on;
# ============================
# ...
}3.重启 Nginx 容器:
docker compose up -d --force-recreate nginx为什么要隐藏源站 IP? 我们来回顾一下流量路径: 访客 -> EdgeOne (防火墙+加速) -> 我们的源站服务器
我们所有的安全策略(WAF、DDoS防护、速率限制)都部署在了 EdgeOne 这个“大门口”。如果攻击者绕过了 EdgeOne,直接找到了源站服务器的真实 IP 地址,那么:
隐藏源站 IP,就是为了确保所有流量都必须经过 EdgeOne 这个“安检口”,强制所有人都从大门进,堵死所有可以翻窗的小路。
如何隐藏源站 IP?
核心思路:配置我们服务器的防火墙,只允许来自 EdgeOne 官方 IP 段的流量访问我们的网站端口(80/443),拒绝所有其他 IP 的直接访问。 EdgeOne 官方 IP 段可通过:https://api.edgeone.ai/ips,这个页面获取。
编写脚本实现隐藏源站 IP
脚本策略:
步骤:
1.编辑脚本文件:
nano /root/update_edgeone_ips.sh2.将下面这份脚本粘贴进去:
#!/bin/bash
# =================================================================
# EdgeOne IP 列表自动更新脚本
# =================================================================
#
# -----------------------------------------------------------------
# --- 配置 ---
API_URL="https://api.edgeone.ai/ips"
NGINX_CONF_PATH="/root/my_website/nginx/conf.d/edgeone_real_ip.conf"
SSH_PORT="22"
echo "--- 开始更新 EdgeOne IP 列表 ---"
# 1. 获取 IP 列表
echo "[1/3] 正在从 $API_URL 获取最新 IP 列表..."
IP_LIST=$(curl -s "$API_URL")
if [ -z "$IP_LIST" ]; then
echo "错误: 无法从 API 获取 IP 数据。"
exit 1
fi
# 2. 更新 Nginx 配置文件
echo "[2/3] 正在生成 Nginx 配置文件: $NGINX_CONF_PATH"
{
echo "# EdgeOne Real IP Configuration - Auto-generated on $(date)";
echo "# Do NOT edit this file manually.";
echo "";
while IFS= read -r ip; do
if [ -n "$ip" ]; then
echo "set_real_ip_from $ip;"
fi
done <<< "$IP_LIST";
} > "$NGINX_CONF_PATH"
echo "Nginx 配置文件生成成功!"
# 3. 快速更新 UFW 规则
echo "[3/3] 正在快速更新 UFW 防火墙规则..."
# a. 禁用 UFW
sudo ufw --force disable > /dev/null
# b. 重置所有规则,自动回答 "yes"
yes | sudo ufw --force reset > /dev/null
# c. 设置默认策略
sudo ufw default deny incoming
sudo ufw default allow outgoing
# d. 添加基础规则 (SSH)
echo " -> 添加 SSH 规则 (端口: $SSH_PORT)..."
sudo ufw allow "$SSH_PORT"/tcp
# e. 循环添加所有 EdgeOne IP 规则
echo " -> 正在添加 $(echo "$IP_LIST" | wc -l) 条 EdgeOne IP 规则..."
while IFS= read -r ip; do
if [ -n "$ip" ]; then
sudo ufw allow from "$ip" to any port 80,443 proto tcp
fi
done <<< "$IP_LIST"
# f. 重新启用 UFW,自动回答 "yes"
yes | sudo ufw enable > /dev/null
echo "UFW 防火墙规则已快速更新!"
echo ""
echo "--- 脚本执行完毕 ---"
echo "防火墙规则已实时生效。请手动重载 Nginx 服务以应用 IP 列表更新:"
echo "cd /root/my_website && docker compose exec nginx nginx -s reload"3.给脚本执行权限:
chmod +x update_edgeone_ips.sh4.Nginx 主配置文件 nginx.conf:
nano /root/my_website/nginx/main-conf/nginx.confset_real_ip_from 0.0.0.0/0;改成:include /etc/nginx/conf.d/edgeone_real_ip.conf;5.首次运行脚本:
./update_edgeone_ips.sh6.根据脚本末尾的提示,手动重载 Nginx:
cd /root/my_website && docker compose exec nginx nginx -s reload检查“隐藏源站 IP”和“获取访客真实 IP”这两目标是否实现 “隐藏源站 IP”是否实现?
1.执行下列命令:
ufw status2.如果出现一个长长的 ALLOW列表,来源全都是 EdgeOne 的官方 IP 地址段,类似下图,那么“隐藏源站 IP”已实现。

“获取访客真实 IP”是否实现?
1.执行以下命令,实时监控 Nginx 访问日志:
tail -f /root/my_website/nginx/logs/access.log2.分别用手机(流量)、电脑(宽带)浏览器无痕模式访问我们的网站:https://anjir.top,里的任意一篇文章,观察滚动日志,如果分别出现了我们手机、电脑的真实ip,那么“获取访客真实 IP”已成功实现。
创建一条 cron 定时任务,使脚本定时执行,Nginx自动重载
1.打开 crontab 编辑器
crontab -e2.新增下面这行命令(含义:每周六凌晨4点,自动更新 EdgeOne 的 IP 列表,并重载相关服务)
0 4 * * 6 /root/update_edgeone_ips.sh >> /var/log/update_edgeone_ips.log 2>&1 && cd /root/my_website && docker compose exec nginx nginx -s reload >> /var/log/update_edgeone_ips.log 2>&1尽可能让 EdgeOne 缓存我们网站上的所有静态内容,甚至部分动态内容,最大限度地减少回源请求,让我们的服务器只处理最核心的动态任务(如文章发布、定时任务),那样不仅能给网站访客更好的体验,还能令我们1核1G的小服务器非常轻松。
缓存规则优化:让源站“高枕无忧”
登录 EdgeOne 控制台,进入我们的站点,点击“站点加速”-“规则引擎”。我们将在这里创建和调整规则。
点击“站点加速”-“站点全局配置”,我们再对全局做点调整。
1.“缓存配置”-“缓存预刷新”,开启,预刷新时间:20%,保存。 说明:在缓存资源过期之前就回源验证缓存资源是否有效,不用等到过期后再验证,提升站点加速性能,更快响应请求。
2.“网络优化”-“IPv6 访问”,开启。
3. 其他保持默认就行。
完成上面配置后,接下来就是见证奇迹的时候了,打开测速网站,再次对我们的网站测速:

可以看到,网站打开速度已经全部深绿色了,对比使用EdgeOne之前的那张测速图可以发现,整体打开速度提升了3倍,且最短的那块板,也由3秒多降到了1秒多,绝大部分地区打开都在1秒内,完美!
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。