有很多后台程序占用大量资源,所以将占用大资源的服务放在本地运行,vps通过nginx反代到本地的服务,节省资源
用法:
- vps的hosts文件里面自定义域名指向本地服务。例如xx.xx.xx.xx yyhome-localhost
- 获取ddns api在路由配置ddns指向
- 将远端vps的hosts文件放一份至本地目录/data/backup/hosts 下面
- 两台主机配置免密登录
- 定时任务10分钟获取一次
#!/bin/bash
HOSTIP=xxx.xxx.xxx.xxx
DATE_TIME=$(date +"%Y-%m-%d %H:%M:%S")
# 替换为你要查询的域名
DOMAIN="xxx.com"
# 需要生成hosts文件的目录
hostsFileDir=/data/backup/hosts
# 使用dig获取域名的IP地址,然后使用awk截取打印
IP_ADDRESS=$(dig +short $DOMAIN | awk 'NR==1{print $1}')
# 获取vps主机的地址
OLD_IP_ADDRESS=$(cat ${hostsFileDir}/hosts|grep "yyhome"|awk '{print $1}')
if [ "$IP_ADDRESS" == "$OLD_IP_ADDRESS" ]; then
echo "IP地址相等,不做变动...${DATE_TIME}" >> /root/updateHostVpsIP.log
else
cat ${hostsFileDir}/hosts.bak > ${hostsFileDir}/hosts
echo "${IP_ADDRESS} yyhome-localhost" >> ${hostsFileDir}/hosts
echo "IP地址不相等,开始同步hosts文件${DATE_TIME}" >> /root/updateHostVpsIP.log
rsync -avzP -e 'ssh -p {你的ssh端口}' ${hostsFileDir}/hosts root@${HOSTIP}:/etc/hosts
sleep 1s
# 重启远端NGINX主机
ssh -p {你的ssh端口} root@${HOSTIP} "/usr/sbin/nginx -s reload" #YYVPS主机
sleep 3s
# 机器人通知
if [ $? -eq 0 ]; then
echo "同步hosts文件成功${DATE_TIME}" >> /root/updateHostVpsIP.log
curl 'https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=微信机器人id' \
-H 'Content-Type: application/json' \
-d '
{
"msgtype": "text",
"text": {
"content": "ddns地址变动,hosts同步文件成功,,vps_nginx服务重启成功"
}
}' #机器人通知
else
echo "同步hosts文件失败${DATE_TIME}" >> /root/updateHostVpsIP.log
curl 'https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=微信机器人id' \
-H 'Content-Type: application/json' \
-d '
{
"msgtype": "text",
"text": {
"content": "ddns地址变动,hosts同步文件失败,请检查服务!"
}
}' #机器人通知
fi
fi