Linux使用Nginx自建CDN服务

平时我们需要自己搭建使用nginx的CDN服务,既然是自建CDN,那么我们肯定需要支持各种协议,比如HTTP/3、WebSocket、gRPC、IPv6等,下面我们来看看如何使用Nginx搭建一个支持各种协议的CDN服务。

我们还需要准备一台网络计较好的服务器,最起码比要加速的网站的网络要好,不然加速效果不明显,甚至可能适得其反。以下是Nginx的安装步骤:

自建步骤

  • 安装宝塔面板

这里分别提供国内和国际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域名,解析到服务器的A记录,然后点击左侧网站,点击添加站点,输入域名,选择Nginx,点击提交,等待创建完成。

  • 配置Nginx

点击宝塔面板左侧⇒软件商店找到设置点击Nginx设置,点击配置文件,找到server标签,添加以下配置:


#在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 为最大缓存空间,可根据硬盘大小自行设置

如图所示:

自建CDN设置

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


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为之前设置的缓存名称,也就是直接引用该缓存名称的配置

如图所示:

自建CDN设置

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

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重启即可。