前几天听到消息说cloudxns要停止免费用户,官方客服也证实了坊间传闻。本站的 DNS 解析就在cloudxns,主要就是看中它们家的宕机切换功能,国内其他商家宕机切换都是收费功能,所以我准备把 DNS 解析换到 Cloudflare,通过 Shell 脚本达到宕机切换的功能。
更多的关于网站安全和优化,这里有:
2、WordPress – 5 秒盾防 CC(PHP 通用代码)
3、Nginx 使用 CDN(CloudFlare)获取网站日志真实 IP 地址
4、Cloudflare 自动脚本提交攻击(恶意)IP 到防火墙[修改版]
功能介绍:
通过检测 HTTP 返回代码小于 307,不做 IP 切换;
通过检测 HTTP 返回代码大于 307,切换备用 IP;
当主站 IP 恢复,检测 HTTP 返回代码小于 307,切换主站 IP;
实施步骤:
1、获取 CF 的 ID
- curl -X GET “https://api.cloudflare.com/client/v4/zones/这里填你官网的 Zone ID/dns_records”
- -H “X-Auth-Email: 这里填你登录的 EMAIL 例如:xxx@gmail.com”
- -H “X-Auth-Key: 这里填你的 API Keys 例如:c9a3a22e788cafcd827b78e1e8dfa7f22b370”
- -H “Content-Type: application/json”
这里注意下,每个子域名获取的 id 都是不一样的:
2、新建脚本 status.sh 把两个 ID 分别填写正确的位置
- #!/bin/bash
- # author: yunloc
- # website: https://yunloc.com
- # 获取 CF 的 ID
- # curl -X GET “https://api.cloudflare.com/client/v4/zones/这里填你官网的 Zone ID/dns_records”
- # -H “X-Auth-Email: 这里填你登录的 EMAIL 例如:xxx@gmail.com”
- # -H “X-Auth-Key: 这里填你的 API Keys 例如:c9a3a22e788cafcd827b78e1e8dfa7f22b370”
- # -H “Content-Type: application/json”
- CheckURL=”https://www.yunloc.com”
- if [ ! -f “status.txt” ];then
- echo “” > status.txt
- else
- status=$(cat status.txt)
- fi
- STATUS_CODE=$(curl -o /dev/null -m 10 –connect-timeout 10 -s -w %{http_code} $CheckURL)
- echo “当前返回代码:$STATUS_CODE”
- if [[ $STATUS_CODE <307 ]] && [[ $status -eq 1 ]]
- then
- cResult=$(curl -s -X PUT “https://api.cloudflare.com/client/v4/zones/这里填你获取的 Zone id/dns_records/这里填你获取的 ID”
- -H “X-Auth-Email: 这里填你登录的 EMAIL 例如:xxx@gmail.com”
- -H “X-Auth-Key: 这里填你的 API Keys 例如:c9a3a22e788cafcd827b78e1e8dfa7f22b370”
- -H “Content-Type: application/json”
- –data ‘{“type”:”A”,”name”:”www.yunloc.com”,”content”:”127.0.0.1″,”proxiable”:true,”proxied”:false,”ttl”:1}’)
- echo $cResult
- echo “返回代码低于 307,返回原站 IP。”
- echo 0 > status.txt
- elif [[ $STATUS_CODE <307 ]]
- then
- echo “返回代码低于 307,不做任何改变!”
- exit
- else
- cResult=$(curl -s -X PUT “https://api.cloudflare.com/client/v4/zones/这里填你获取的 Zone id/dns_records/这里填你获取的 ID”
- -H “X-Auth-Email: 这里填你登录的 EMAIL 例如:xxx@gmail.com”
- -H “X-Auth-Key: 这里填你的 API Keys 例如:c9a3a22e788cafcd827b78e1e8dfa7f22b370”
- -H “Content-Type: application/json”
- –data ‘{“type”:”A”,”name”:”www.yunloc.com”,”content”:”127.0.0.2″,”proxiable”:true,”proxied”:false,”ttl”:1}’)
- echo $cResult
- echo “返回代码高于 307,更改备用 IP 记录。”
- echo 1 > status.txt
- fi
设置定时任务,每 10 分钟检查一次:
- */10 * * * * /root/status.sh
此脚本可以放在任何机器上定时运行,最好不要放在网站同服务器,不然服务器挂了就不能切换了。
3、如果需要宕机切换 IP,可以参考 502 重启脚本,检测代码为 000 是就代表宕机了:
- #!/bin/bash
- CheckURL=”https://www.yunloc.com”
- # curl -I -m 10 -o /dev/null -s -w %{http_code} https://www.yunloc.com
- STATUS_CODE=`curl -o /dev/null -m 10 –connect-timeout 10 -s -w %{http_code} $CheckURL`
- #echo “$CheckURL Status Code:t$STATUS_CODE”
- if [ “$STATUS_CODE” = “502” ]; then
- /etc/init.d/php-fpm restart
- fi
https://www.yunloc.com/698.html
Leave a reply