
前言
CloudFlare
是一家美国的服务商,大概是”最良心”的CDN服务商
。它所提供的CDN免费套餐,通篇贯彻"免费"
二字,没有友商的那些各种限制,免备案(海外节点)、免费
不限量的SSL、免费
不限量的流量/请求数、免费
的页面规则、免费
的IPV6支持,免费
的WebSocket协议支持,免费
的防DDOS/防CC。官方客服直言免费套餐和高级套餐的节点是一样的,只是权重侧重会有不同。
一、安装宝塔
curl -sSO http://download.bt.cn/install/install_panel.sh && bash install_panel.sh
二、安装Nginx
通过命令行安装或者登录宝塔后台安装,都是可以的
这里我使用命令行安装
cd /www/server/panel/install/
bash install_soft.sh 1 install nginx 1.19
三、安装Nginx防火墙插件
Nginx防火墙可以提供WAF功能,是非常好的一个插件
登录后台面板,在安装软件界面的第三方应用
有免费的”Nginx免费防火墙”
免费防火墙和付费防火墙二选其一安装即可,当然,你硬是要两个一起装也是装不了的,装了免费再装付费应该会自动卸载免费的,反过来也一样。
Nginx防火墙里有个配置是”禁止海外访问”,我们本来的打算这个反代节点就是给国内访客分流,所以可以不关,但建议还是关掉。
四、创建一个默认的站点
- 设置默认站点后,所有未绑定的域名和IP都被定向到默认站点
- 可有效防止恶意解析
1. 在宝塔后台添加一个网站,域名可以随便填写一个不用的。
2. 将默认站点设置为它
3. 修改网站配置文件,添加一行return 444;
,保存。
然后设置SSL为随意一个自签证书,这时候,所有没有绑定的域名解析到服务器都不会响应,而不是宝塔的错误页面。
五、宝塔中创建反代网站
1. 在宝塔后台创建一个网站,域名写你网站的域名
如本文中的十七博客:www.yowap.com
2. 配置SSL
可以选择Let's Encrypt
,或者自己自定义填写,我这里是填写我已有的。
3. 添加反向代理
- 名称随意
- 目标URL填https://CloudFlare的IP
- 发送域名$host,或者填域名也可以
- 缓存不开启(缓存不用宝塔默认的配置)
CloudFlare的IP可以填和我一样的104.19.19.19
,也可以自己找别的IP,诸如1.0.0.1
、1.1.1.1
都是可以的,可以到SSH终端ping一下看看
我ping这个IP只有2ms左右,说明CloudFlare在离我这个香港VPS很近的地方有边缘节点,这是很好的
4. 修改反代配置,使其支持https
依次点开反向代理
;配置文件
在每个location
内分别添加下列两行代码
proxy_ssl_name $host;
proxy_ssl_server_name on;
5. 修改反代配置,缓存静态文件
参考上面第4步,修改反代配置,再最后面添加下列代码
location ~* \.(htm|html|gif|jpg|jpeg|png|bmp|swf|ioc|ico|rar|zip|txt|flv|mid|doc|ppt|pdf|xls|mp3|wma|css|js)$
{
proxy_pass https://104.19.19.19;
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_ssl_name $host;
proxy_ssl_server_name on;
add_header X-Cache $upstream_cache_status;
#Set Nginx Cache
proxy_ignore_headers Set-Cookie Cache-Control expires;
proxy_cache cache_one;
proxy_cache_key $host$uri$is_args$args;
proxy_cache_valid 200 304 301 302 2d;
expires 12h;
}
倒数第二行proxy_cache_valid 200 304 301 302 2d;
后面的2d
就是缓存2天的意思,3d是3天,4d是4天以此类推
修改之后就不要用自带的编辑
功能了(会使我们添加的缓存代码失效),需要修改的话建议像是第4、第5步这样点配置文件
进去修改。
附完整配置,非宝塔纯Nginx用户可以直接复制全部,理论上是一样用的(宝塔用户也是一样可以偷懒省略第4步直接复制这个)
#PROXY-START/
location ~* \.(php|jsp|cgi|asp|aspx)$
{
proxy_pass https://104.19.19.19;
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_ssl_name $host;
proxy_ssl_server_name on;
}
location /
{
proxy_pass https://104.19.19.19;
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_ssl_name $host;
proxy_ssl_server_name on;
add_header X-Cache $upstream_cache_status;
#Set Nginx Cache
proxy_ignore_headers Set-Cookie Cache-Control expires;
add_header Cache-Control no-cache;
expires 12h;
}
location ~* \.(htm|html|gif|jpg|jpeg|png|bmp|swf|ioc|ico|rar|zip|txt|flv|mid|doc|ppt|pdf|xls|mp3|wma|css|js)$
{
proxy_pass https://104.19.19.19;
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_ssl_name $host;
proxy_ssl_server_name on;
add_header X-Cache $upstream_cache_status;
#Set Nginx Cache
proxy_ignore_headers Set-Cookie Cache-Control expires;
proxy_cache cache_one;
proxy_cache_key $host$uri$is_args$args;
proxy_cache_valid 200 304 301 302 2d;
expires 12h;
}
#PROXY-END/
六、本地改hosts测试
1. 在本地hosts添加一行,把域名指向反代服务器的IP
2. 浏览器新开一个窗口/标签页(无痕模式更佳),打开调试模式,如果有本身开了代理的话先关掉
切到Network
页面,地址框直接打开https的页面,如我的https://www.ljpic.com
如果你严格按照我的步骤来做,一般是成功的,如图,我的十七博客
自建香港节点就部署成功了
七、在DNS解析国内外访客分流
如DNSPod,在添加解析时,就可以选择默认
、境内
、境外
、移动联通电信
等
我的建议是这样默认
设置到CloudFlare
境内
设置到自建反代节点
境外
设置到CloudFlare
,可以不设置(和默认有所重叠)移动联通电信
如果你有多个自建的反代节点,针对不同运营商线路各有优劣,那就按需设置吧
如果你还需要更细分的,按地区的(细分到华南、华北、西南等等)DNS,可以试试华为云DNS
,华为云DNS的免费套餐对此是最强的。
![图片[1]-基于宝塔Nginx反代CloudFlare自建CDN节点国内外访客分流访问-滤镜色彩](https://cdn.ljpic.com/wp-content/uploads/2024/02/image-32.png!mi)
暂无评论内容