Linux使用Caddy配置反向代理
Caddy
是一个现代化的、易于使用的Web
服务器,配置非常简单,在很多方面可以替代Nginx
使用。
反代步骤
安装Caddy
使用SSH
客户端,比如Xshell
软件,登录服务器,再使用命令:
mkdir -p /usr/local/caddy
wget -N --no-check-certificate https://file.efvcms.com/moeapp/caddy/caddy -P /usr/local/caddy
wget -N --no-check-certificate https://file.efvcms.com/moeapp/caddy/caddy.service -P /etc/systemd/system
chmod +x /usr/local/caddy/caddy
配置域名
该配置会自动签发ssl
证书,请提前解析域名的A
记录到服务器ip
,并等待解析生效。
然后在SSH
客户端使用命令:
#以下全部内容是一个整体,请修改域名和需要反代的地址127.0.0.1:3000,然后一起复制到SSH运行!
echo "www.efvcms.com {
gzip
tls admin@efvtest.com
proxy / 127.0.0.1:3000
}" > /usr/local/caddy/Caddyfile
开启相关防火墙
由于有些服务器会关闭80
、443
等端口,会影响到我们绑定域名并申请ssl
证书,使用命令:
#CentOS 7+、AlmaLinux、Rocky Linux系统
firewall-cmd --zone=public --add-port=80/tcp --permanent
firewall-cmd --zone=public --add-port=443/tcp --permanent
firewall-cmd --reload
#Debian、Ubuntu系统
ufw allow 80
ufw allow 443
启动并设置开机自启
systemctl start caddy
systemctl enable caddy
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为之前设置的缓存名称,也就是直接引用该缓存名称的配置
如图:
然后删除配置文件里面的这几行代码,不然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
,重启下Nginx
即可。
相关提示
有些服务器流量有限,且双向计算,所以这里需要将最大缓存空间设置尽量大点,这样缓存一次后,资源最大化从cdn
服务器拉取,而不需要额外从源站拉取资源,节约流量。