为何自建CDN
虽然有一些知名的免费和付费的CDN服务提供商,如Cloudflare、七牛、又拍云、阿里云CDN和腾讯云CDN等,但是在国内建立一个CDN服务器需要进行域名备案,而且在亚太节点使用这些CDN服务的费用也相对较高。为了解决这些问题,自建CDN是一个十分必要的选择,尤其是对于流量较大、包含视频或图片的网站来说,自建CDN不仅能够提高网站访问速度,还能节省大量的建站成本。
OneClickCDN介绍
OneClickCDN是由香菇肥牛博主原创开发的自建CDN脚本,可以一键安装配置高性能的CDN节点。OneClickCDN支持Ubuntu 20.04 LTS、Debian 10、Debian 11、CentOS 7/8操作系统。这是一个免费开源的CDN解决方案,可以为您的网站减少延迟、提高访问速度、增强稳定性。OneClickCDN 是基于Apache Traffic Server系统开发的,ATS由Yahoo于2009年开源并目前已成熟的Dai理/缓存/CDN系统之一。使用OneClickCDN开发的CDN服务器已经被Apple、Comcast、Yahoo、Akamai等世界知名企业所应用,同时也被国内的又拍云等流量服务提供商所活跃。通过使用 OneClickCDN 一键安装配置高性能的CDN节点脚本,您可以轻松搭建自己的CDN服务器,为您的网站提供更优质的加速服务。
CDN服务器要求
系统环境要求:目前支持Ubuntu 20.04 LTS, Debian 10, CentOS 7/8操作系统,CDN服务器正常运行时仅需要系统有500MB的内存。但是程序第一次编译安装的时候需要1500MB左右的内存。若您的VPS内存不够,可以加一些内存。需要注意的是,该脚本需要安装在新装的操作系统中。
该程序和其他面板(比如宝塔,cPanel, Directadmin)等不兼容,为了可以达到最大的加速效果,建议选择大带宽和大流量的香港VPS、韩国VPS或者美国三网CN2 GIA VPS主机,这样无论是电信、联通还是移动网络用户,都可以获得最佳了访问体验。
一键安装CDN脚本
ATS官网:https://docs.trafficserver.apache.org
CDN脚本:https://github.com/Har-Kuun/OneClickCDN
一键安装配置CDN服务器OneClickCDN脚本,因为是一键脚本,所以使用起来非常简单,只需要一行命令就可以啦!
使用管理员root账号连接SSH后直接使用下面的一键安装CDN脚本即可。
wget https://raw.githubusercontent.com/Har-Kuun/OneClickCDN/master/OneClickCDN.sh && sudo bash OneClickCDN.sh
wget https://raw.githubusercontent.com/Har-Kuun/OneClickCDN/master/translation/translated_scripts/OneClickCDN_zh-CN.sh && sudo bash OneClickCDN_zh-CN.sh
第一次运行时,程序会提示自动编译安装Apache Traffic Server。
安装过程中可能会出现以下情况,直接回车键即可,要是还有弹窗,直接回车默认安装
Configuration file '/etc/grub.d/10_linux'
==> Modified (by you or by a script) since installation.
==> Package distributor has shipped an updated version.
What would you like to do about it ? Your options are:
Y or I : install the package maintainer's version
N or O : keep your currently-installed version
D : show the differences between the versions
Z : start a shell to examine the situation
The default action is to keep your current version.
*** 10_linux (Y/I/N/O/D/Z) [default=N] ?
安装好Apache Traffic Server后,接下来会让你选择配置缓存规则、内存缓存大小、磁盘缓存大小、是否想让Traffic Server缓存动态内容等等。如下图
您是否要设置默认的缓存规则? [Y/N]
N (建议选择N,不然网站登陆会注册都会出现一些问题,过来人实测)
配置缓存规则...
成功配置缓存规则。
配置缓存大小...
请输入内存缓存大小。
单位为M. 请输入一个整数值。
推荐值为200M每GB内存。
400
RAM缓存值已设置为 400M.
请输入磁盘缓存大小。
单位为M. 请输入一个整数值。
推荐值为至少2048M.
8000
磁盘缓存已设置为 8000M.
正在为磁盘缓存分区...
磁盘缓存分区成功。
配置header修改器...
header修改器已启用
您是否想让Traffic Server缓存动态内容? [Y/N]
y
更新缓存规则...
已更新缓存规则!
Traffic Server将缓存动态内容。
Would you like to enable "Access-Control-Allow-Origin" header (CORS)?
如果您不知道这是什么,请选择Y. [Y/N]
y
设置CORS信头...
CORS信头已添加!
The "server" header can be a short phrase, like "shc-cdn-server 1.0.0", or "Traffic Server 8.0.8".
If you do not change it, the default value is "ATS/8.0.8"
您想要更改吗? [Y/N]
n
Server信头字段未更改。
配置成功!
请开始下一步,添加第一个CDN网站。
添加和配置CDN加速网站
接下来就是添加和配置CDN加速网站了,你也可以重新运行命令:sudo bash OneClickCDN.sh 或者 sudo bash OneClickCDN_zh-CN.sh,如下图:
一键脚本提供了列出当前所有CDN网站、高级缓存控制选项、添加一个CDN网站、为网站配置SSL、显示配置文件与日志文件路径、查看网站统计数据、续期Let’s Encrypt证书等等。
检查Traffic Server安装状态...
Traffic Server 已安装且正在运行!
请问您需要什么帮助呢?
1 - 列出当前所有CDN网站。
2 - 高级缓存控制选项
3 - 添加一个CDN网站。
4 - 为网站配置SSL.
5 - 显示配置文件与日志文件路径。
6 - 查看网站统计数据。
7 - 列出常用命令。
8 - 显示作者信息。
11 - 更改网站IP地址。
12 - 移除一个CDN网站。
13 - 重新配置 Traffic Server.
14 - 续期Let's Encrypt证书。
21 - 将Trafficserver配置信息与SSL证书备份至文件。
22 - 从本地服务器的备份文件中导入Trafficserver配置信息与SSL证书。
23 - 从URL链接指向的备份文件中导入Trafficserver配置信息与SSL证书。
0 - 保存所有修改并退出此脚本。
请选择 1/2/3/4/5/6/7/8/11/12/13/14/21/22/23/0:
域名解析到这台CDN的IP地址
如果您的网站启用了SSL证书,那么使用一键安装配置高性能的CDN节点可以帮助您在CDN服务器上轻松自动申请和配置Let’s Encrypt证书,进而提高网站安全性。在使用该脚本之前,您需要将您的域名解析到CDN服务器上的IP地址上。
需要注意的是,您的源站SSL加密证书不需要与CDN一致,只需要在配置CDN脚本时自动申请和配置Let’s Encrypt证书即可,这样您的网站就可以安全可靠地访问了。
温馨提示:另外有个问题需要注意的是,配置CDN后可能出现无法访问的情况,你可以清理浏览器缓存,清理DNS缓存来解决,本站在配置的时候就出现过这个问题,解决方法就是把DNS改成阿里的才搞定。
添加CDN域名
请问您需要什么帮助呢?
1 - 列出当前所有CDN网站。
2 - 高级缓存控制选项
3 - 添加一个CDN网站。
4 - 为网站配置SSL.
5 - 显示配置文件与日志文件路径。
6 - 查看网站统计数据。
7 - 列出常用命令。
8 - 显示作者信息。
11 - 更改网站IP地址。
12 - 移除一个CDN网站。
13 - 重新配置 Traffic Server.
14 - 续期Let's Encrypt证书。
21 - 将Trafficserver配置信息与SSL证书备份至文件。
22 - 从本地服务器的备份文件中导入Trafficserver配置信息与SSL证书。
23 - 从URL链接指向的备份文件中导入Trafficserver配置信息与SSL证书。
0 - 保存所有修改并退出此脚本。
请选择 1/2/3/4/5/6/7/8/11/12/13/14/21/22/23/0:
3
请输入您网站的域名(比如example.com):
www.sfstool.cn
请输入源站IP地址。如果源站有多个IP地址,可以填任意一个。
1.1.1.1
源站是否启用SSL?如果是HTTPS, 请输入1; 如果是HTTP, 请输入2.
1
为www.sfstool.cn添加映射规则...
已添加2条规则。
您是否想要现在为www.sfstool.cn配置SSL证书?
您可以提供您自己的证书;如果您已经将域名指向了该服务器的IP地址,您也可以一键生成免费的Let's Encrypt SSL证书。
请输入您的选项。
1: 我知道我的证书文件的路径(私钥,证书,CA中间链证书(可选)),我想提供我自己的证书。
2: 我已经将我的域名指向了该服务器的IP, 我想生成免费的Let's Encrypt证书。
3: 我不记得证书文件放在哪儿了,得去找找;或者我暂时不想为该域名设置SSL.
请选择 1, 2, or 3:
2
开始用Let's Encrypt生成免费SSL证书。...
该功能仍在实验阶段,请您知悉。...
关闭Traffic Server...
请输入一个邮箱地址:
sfstool@qq.com
* Stopping Apache Traffic Server trafficserver [ OK ]
接下来你就可以看到配置成功,网站就可以访问了
相关管理命令
1.启动
trafficserver start
2.关闭
trafficserver stop
3.重启
trafficserver restart
4.重载配置文件(很多情况下好像都没有生效)
traffic_ctl config reload
5.监控ats的状况 类似于top命令
traffic_top
6.清理所有缓存
traffic_server -Cclear
重启命令:trafficserver restart 每次配置完成后需要对CDN进行重启才能失效
ATS CDN加速效果体验
怎么判断 Apache Traffic Server 是否生效呢?您可以打开您的网站,并在Chrome浏览器中查看URL返回头部。如果您在配置 Apache Traffic Server 时自定义了“server” header,那么在此处就可以看到了。默认的 header 是 “shc-cdn-server 1.0.0”或“Traffic Server 8.0.8”。如果您看到了自己配置的 header,则说明CDN加速已经成功生效了。
通过加速之前和CDN加速后效果比较的明显
推荐使用香港CN2+BGP线路的服务器,Apache Traffic Server CDN服务器可以有效地改善美国CN2 VPS主机在晚上,上网高峰期的移动和联通打开网站的速度。
启用CDN后如何获取用户真实IP
在 records.config添加下面一行,然后重启ATS。
CONFIG proxy.config.http.insert_forwarded STRING for
想要修改server header,你可以重装配置Traffic Server,或者在/etc/trafficserver/header_rewrite.so里面加上,然后重启ATS :
cond %{SEND_RESPONSE_HDR_HOOK} [AND]
cond %{HEADER:server} =ATS/8.0.8
set-header server "NewServerName"
实现负载均衡,联通,移动,电信,国内,国外用户走不同线路
您可以按照上述方法,在多台服务器上部署CDN节点,这可以为联通、移动、电信、国内和国外用户提供不同的线路加速效果。部署完成后,您只需要使用DNSPOD来设置好线路解析即可。下面的图表展示了如何配置6个CDN节点服务器来加速您的网站,甚至可以添加更多的CDN节点。
你甚至还可以专门对搜索引擎设置CDN节点来帮助网站的收录,不过不清楚效果怎么样,如下图
本站详细配置参考
Traffic Server 安装成功!
* Starting Apache Traffic Server trafficserver [ OK ]
Traffic Server 启动成功!
Created symlink /etc/systemd/system/multi-user.target.wants/trafficserver.service → /etc/systemd/system/trafficserver.service.
配置Traffic Server...
您是否要设置默认的缓存规则? [Y/N]
Y
配置缓存规则...
成功配置缓存规则。
配置缓存大小...
请输入内存缓存大小。
单位为M. 请输入一个整数值。
推荐值为200M每GB内存。
400
RAM缓存值已设置为 400M.
请输入磁盘缓存大小。
单位为M. 请输入一个整数值。
推荐值为至少2048M.
8088
磁盘缓存已设置为 8088M.
正在为磁盘缓存分区...
磁盘缓存分区成功。
配置header修改器...
header修改器已启用
您是否想让Traffic Server缓存动态内容? [Y/N]
Y
更新缓存规则...
已更新缓存规则!
Traffic Server将缓存动态内容。
Would you like to enable "Access-Control-Allow-Origin" header (CORS)?
如果您不知道这是什么,请选择Y. [Y/N]
Y
设置CORS信头...
CORS信头已添加!
The "server" header can be a short phrase, like "shc-cdn-server 1.0.0", or "Traffic Server 8.0.8".
If you do not change it, the default value is "ATS/8.1.3"
您想要更改吗? [Y/N]
Y
请给这台服务器取名。
CDN
好的,正在设置server信头字段...
Server header set!
配置成功!
请开始下一步,添加第一个CDN网站。
请问您需要什么帮助呢?
1 - 列出当前所有CDN网站。
2 - 高级缓存控制选项
3 - 添加一个CDN网站。
4 - 为网站配置SSL.
5 - 显示配置文件与日志文件路径。
6 - 查看网站统计数据。
7 - 列出常用命令。
8 - 显示作者信息。
11 - 更改网站IP地址。
12 - 移除一个CDN网站。
13 - 重新配置 Traffic Server.
14 - 续期Let's Encrypt证书。
21 - 将Trafficserver配置信息与SSL证书备份至文件。
22 - 从本地服务器的备份文件中导入Trafficserver配置信息与SSL证书。
23 - 从URL链接指向的备份文件中导入Trafficserver配置信息与SSL证书。
0 - 保存所有修改并退出此脚本。
请选择 1/2/3/4/5/6/7/8/11/12/13/14/21/22/23/0:
3
请输入您网站的域名(比如example.com):
www.1.com
请输入源站IP地址。如果源站有多个IP地址,可以填任意一个。
68.8.8.9
源站是否启用SSL?如果是HTTPS, 请输入1; 如果是HTTP, 请输入2.
1
为www.1.com添加映射规则...
已添加2条规则。
您是否想要现在为www.1.com配置SSL证书?
您可以提供您自己的证书;如果您已经将域名指向了该服务器的IP地址,您也可以一键生成免费的Let's Encrypt SSL证书。
请输入您的选项。
1: 我知道我的证书文件的路径(私钥,证书,CA中间链证书(可选)),我想提供我自己的证书。
2: 我已经将我的域名指向了该服务器的IP, 我想生成免费的Let's Encrypt证书。
3: 我不记得证书文件放在哪儿了,得去找找;或者我暂时不想为该域名设置SSL.
请选择 1, 2, or 3:
2
开始用Let's Encrypt生成免费SSL证书。...
该功能仍在实验阶段,请您知悉。...
关闭Traffic Server...
请输入一个邮箱地址:
1@1.com
* Stopping Apache Traffic Server trafficserver [ OK ]
Saving debug log to /var/log/letsencrypt/letsencrypt.log
Plugins selected: Authenticator standalone, Installer None
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Would you be willing to share your email address with the Electronic Frontier
Foundation, a founding partner of the Let's Encrypt project and the non-profit
organization that develops Certbot? We'd like to send you email about our work
encrypting the web, EFF news, campaigns, and ways to support digital freedom.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
(Y)es/(N)o: y
Obtaining a new certificate
Performing the following challenges:
http-01 challenge for www.1.com
Waiting for verification...
Cleaning up challenges
IMPORTANT NOTES:
- Congratulations! Your certificate and chain have been saved at:
/etc/letsencrypt/live/www.1.com/fullchain.pem
Your key file has been saved at:
/etc/letsencrypt/live/www.1.com/privkey.pem
Your cert will expire on 2022-06-15. To obtain a new or tweaked
version of this certificate in the future, simply run certbot
again. To non-interactively renew *all* of your certificates, run
"certbot renew"
- Your account credentials have been saved in your Certbot
configuration directory at /etc/letsencrypt. You should make a
secure backup of this folder now. This configuration directory will
also contain certificates and private keys obtained by Certbot so
making regular backups of this folder is ideal.
- If you like Certbot, please consider supporting our work by:
Donating to ISRG / Let's Encrypt: https://letsencrypt.org/donate
Donating to EFF: https://eff.org/donate-le
- We were unable to subscribe you the EFF mailing list because your
e-mail address appears to be invalid. You can try again later by
visiting https://act.eff.org.
SSL证书配置成功。
源站IP: 68.8.8.9
私钥文件地址: /etc/trafficserver/ssl/www.1.com.key
证书文件地址: /etc/trafficserver/ssl/www.1.com.crt
* Starting Apache Traffic Server trafficserver [ OK ]
CDN网站添加成功
常见问题
常见安装和使用问题可以在这里查看:https://github.com/Har-Kuun/OneClickCDN/issues/
博主安装过程遇到的问题
问题一、报依赖环境缺失(在这里折腾了好久)
解决方法:https://github.com/Har-Kuun/OneClickCDN/issues/20
最新trafficserver链接:https://downloads.apache.org/trafficserver/
一定要替换成最新版本的trafficserver,否则还是会报依赖环境缺失问题。
其它
安装过程较为漫长,有的时候会停顿很长时间止步不前,不过想到能给自己的网站加速,还能省一大笔钱,耐心等待有何不可?博主折腾了两天才搞定
相关ATS缓存规则你可参考此文章 ATS配置及缓存规则
以上就是OneClickCDN 一键自建CDN节点脚本的详细图文教程
每天定时更新各种教程文章与线报福利!
SFS运维工具箱专注原创网络技术服务
禁止非法转载原创文章、如需转载请联系作者!否则后果自负!
本文章只提供参考学习!请勿用于商业用途!
“SFS运维工具箱”公众号诚邀广大技术人员
投稿投稿邮箱:sfstool@qq.com
转载商务合作邮箱:sfstool@qq.com
小编QQ:2841936347