前言
个人网站搭建在多数情况下,基本是单台服务器托管多个站点,
长期以来我都是这样建站的,因为简单,但是
源站直接暴露在公网,面临 DDoS、CC 攻击或恶意扫描的风险,以下有三种方案可供参考
添加b服务器,做站点目录同步和数据库主从同步,域名解析到b
添加b服务器,使用nginx反代源站
不需要额外机子,源站开启cf代理,这种方式最便捷省事
先说第一种,配置比较繁琐,这种方式我使用了一段时间,博客有介绍,但涉及到数据库的操作,容易误操作,弃之,
第二种后面再说,先说第三种,cf虽然速度欠佳,但配置好缓存整体还是可以的,
但是假设你有dmca数字千年版权法的困扰(尤其影视站),单台服务器是不行的,避免商家收到投诉停机。
总之,你还是需要b服务器。那么可不可以结合一下,nginx反代的同时开启cf代理呢,答案是没问题
- 优势:
- 提升安全性:源站 IP 隐匿,避免成为直接攻击目标。
- 低成本防护:结合 Cloudflare 免费防护,无需源站改造。
整活
debian11, 宝塔面板7.7.0
在b服务器安装宝塔面板,推荐安装原版,可解除手机登录,不要安装什么开心版。推荐以下脚本安装
curl -sSO https://raw.githubusercontent.com/8838/btpanel-v7.7.0/main/install/install_panel.sh && bash install_panel.sh
1,屏蔽手机号
sed -i "s|bind_user == 'True'|bind_user == 'XXXX'|" /www/server/panel/BTPanel/static/js/index.js
2,删除强制绑定手机 js 文件
rm -f /www/server/panel/data/bind.pl
3.安装好之后,仅仅需要安装nginx即可,需要到软件商店里查找nginx,然后安装1.27版本,使用编译的方式安装
假设用户访问的域名是a.com, b.com是源站域名,b.com可开启cf代理(推荐),也可不开代理,但是需要配置好证书,
然后添加a.com站点,
接着使用以下配置覆盖nginx1.27配置,保存重启nginx。
https://github.com/woniu336/open_shell/blob/main/bt-cf/nginx.conf
接着使用以下配置覆盖a.com站点
https://github.com/woniu336/open_shell/blob/main/bt-cf/http.conf
把a.com替换成用户访问的域名,b.com替换成源站域名即可
把a.com解析到这台机子ip,开启cf小黄云,搞定!
实测和源站开启cf代理并无明显差异
你可能觉得直接在抗版权的机子上建站,再开启cf代理不就完事了。这样的好处是不动源站,不想再繁琐的部署站点。
但是还是回到前面说的隐藏源站,提高安全性的话题,最重要的一点是下面我将提到的进阶玩法,
请不要觉得这样建站不正经,恰恰相反,cdn和负载均衡是不是更折腾,在你看来是不是更不正经都是瞎折腾,
不管是cdn还是反代,原理都是差不多的。
我们求稳的同时,也要居安思危,万一雷来了,好应付。
那如果a.com不开cf代理呢?流程如下:
nginx配置还是使用前面给的覆盖,a.com申请好证书,然后使用以下配置覆盖站点,
https://github.com/woniu336/open_shell/blob/main/bt-cf/https.conf
把a.com替换成主域名,b.com替换成源站域名,
最后a.com解析到本机ip(即b服务器)
进阶玩法
尽管开启cf代理带来了稳定性,但如果我想要追求速度呢,也就是源站开启cf代理,a.com直接解析到线路机。
开整:
同样在宝塔面板新建a.com,申请证书,推送使用以下脚本申请,适配宝塔面板,自动续期
curl -sS -O https://raw.githubusercontent.com/woniu336/open_shell/main/ssl-cert.sh && chmod +x ssl-cert.sh && ./ssl-cert.sh
mjj们手上或多或少都有gia cn2、cmin2, 4837机子吧,那么多流量用不完不就浪费了
找一台线路机,根据以下流程:
首先设置调优参数:
curl -sS -O https://raw.githubusercontent.com/woniu336/open_shell/main/ophaproxy.sh && chmod +x ophaproxy.sh && ./ophaproxy.sh
然后执行haproxy转发,输入b服务器的ip即可
curl -sS -O https://raw.githubusercontent.com/woniu336/open_shell/main/bt-cf/haproxy/setup_haproxy.sh && chmod +x setup_haproxy.sh && ./setup_haproxy.sh
会占用80和443端口,如需开放防火墙。
接着使用以下配置覆盖nginx配置,
https://github.com/woniu336/open_shell/blob/main/bt-cf/haproxy/nginx-s.conf
注意:set_real_ip_from 3.3.3.3;
把3.3.3.3替换成 线路机ip
然后使用以下配置覆盖a.com站点
https://github.com/woniu336/open_shell/blob/main/bt-cf/haproxy/https-s.conf
把a.com替换成主域名,b.com替换成源站域名
重启nginx,最后把a.com解析到线路机ip,成功搞定!
如果你有小鸡多,可以使用以上命令一键设置,a.com解析到多个小鸡ip上,如域名托管在dnspod,还能分运营商解析。
请放心,以上玩法不会被薅羊毛,即使反代了cf,也是经过了sni验证,薅不到。
以上的流程是:b反代了源站,线路机转发了b,可以多个线路机转发一个b,达到伪cdn的目的!
注意事项
如果源站开启了cf代理,请加白反代ip