Linux使用Nginx自建CDN服务

目前我们提供免费的CDN缓存系统,如果觉得不太好用,可以使用Nginx自建CDN,最后觉得哪个体验好就使用哪个。

不过既然是自建CDN,那么我们需要准备一台网络比较好的服务器,最起码得比要加速的服务器网络好,不然自建就没意义了。

以下操作均在需要自建CDN的服务器上进行。

自建步骤

安装宝塔面板

这里分别提供宝塔国内和国际2个版本安装,区别是宝塔国内版需要强制登录宝塔账号,而国际版不需要,可自行选择安装

使用SSH客户端登录服务器,使用命令:

#CentOS系统,国内版本
yum install -y wget && wget -O install.sh https://download.bt.cn/install/install_6.0.sh && sh install.sh ed8484bec
#CentOS系统,国际版本
yum install -y wget && wget -O install.sh http://www.aapanel.com/script/install_6.0_en.sh && bash install.sh aapanel

#Debian系统,国内版本
wget -O install.sh https://download.bt.cn/install/install-ubuntu_6.0.sh && bash install.sh ed8484bec
#Debian系统,国际版本
wget -O install.sh http://www.aapanel.com/script/install-ubuntu_6.0_en.sh && bash install.sh aapanel

#Ubuntu系统,国内版本
wget -O install.sh https://download.bt.cn/install/install-ubuntu_6.0.sh && sudo bash install.sh ed8484bec
#Ubuntu系统,国际版本
wget -O install.sh http://www.aapanel.com/script/install-ubuntu_6.0_en.sh && sudo bash install.sh aapanel

安装完成后,会给你宝塔登录信息,保存好就行。

安装Nginx

点击宝塔面板左侧 ⇒ 软件商店 ⇒ 找到Nginx安装即可。

绑定域名

先准备一个域名作为CDN域名,可以是2级域名,然后解析域名的A记录到服务器ip,然后点击宝塔面板左侧 ⇒ 网站 ⇒ 添加站点,只需要填写域名,其它默认就行,如图:

配置CDN

点击宝塔面板左侧 ⇒ 软件商店 ⇒ 找到Nginx ⇒ 点击设置,配置修改,如下:

#在http{}里面加入以下代码
proxy_cache_path /www/wwwroot/www.efvcms.com levels=1:2 keys_zone=efv:500m inactive=1d max_size=50g;

主要参数如下:

proxy_cache_path /www/wwwroot/www.efvcms.com 后面路径为缓存目录,可自行修改,比如你CDN域名根目录
keys_zone=efv:500m efv为缓存的名字,可不变;后面500m为内存缓存空间,自行根据内存大小适当进行修改
inactive=1d 为一定时间内没人访问的资源缓存清空时间,如1d,也就是1天没有被访问的内容自动清除,10天可设置为10d
max_size=50g 为最大缓存空间,可根据硬盘大小自行设置

如图:

接下来再点击域名右侧设置按钮,点击配置文件,加入以下代码:

location /
{
    proxy_pass http://185.172.165.11:3000;
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header REMOTE-HOST $remote_addr;
    proxy_cache efv;
    proxy_ignore_headers cache-control;
    proxy_cache_key $host$uri$is_args$args;
    add_header Nginx-Cache $upstream_cache_status;
    proxy_cache_valid 200 304 30m;
    proxy_cache_valid 301 24h;
    proxy_cache_valid 500 502 503 504 0s;
    proxy_cache_valid any 1s;
    proxy_cache_min_uses 1;
    expires 12h;
}

主要参数如下:

proxy_pass http://185.172.165.11:3000 后面地址为需要加速的地址,可直接修改为转码服务器的访问地址,如ip:3000
proxy_cache efv 后面的efv为之前设置的缓存名称,也就是直接引用该缓存名称的配置

如图:

然后删除配置文件里面的这几行代码,不然jsjpg等文件缓存不了,代码如下:

location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
{
    expires      30d;
    error_log off;
    access_log /dev/null;
}

location ~ .*\.(js|css)?$
{
    expires      12h;
    error_log off;
    access_log /dev/null; 
}

最后基本上设置好了,然后此时我们访问CDN域名后,数据会根据缓存配置,缓存到设置的缓存目录。

注意如果这里设置不生效,记得点击宝塔面板左侧 ⇒ 软件商店 ⇒ 找到Nginx,重启下Nginx即可。

相关提示

有些服务器流量有限,且双向计算,所以这里需要将最大缓存空间设置尽量大点,这样缓存一次后,资源最大化从cdn服务器拉取,而不需要额外从源站拉取资源,节约流量。