背景:测试环境为共用环境,开发在测试自己的分支时,喜欢直接修改Nginx配置,把端口改为自己分支环境的服务端口
解决方法:实时监控Nginx配置(nginx.conf),发现指定行被修改后,立即回退到上次修改
流程:
1.手动备份一份最新可用的Nginx配置文件
2.启动脚本:nohup ./check_diff.sh &
3.脚本每10秒diff当前配置和备份配置
4.检查diff出的结果,如果发现包含“> fastcgi_pass 127.0.0.1:12345”,则需回退
5.如果不包含,则需更新备份配置
监控脚本:
while true;
do
diff /etc/nginx/nginx.conf /etc/nginx/nginx.conf.xgd > diff_res
if [ $? -ne 0 ];
then
date "+%Y-%m-%d %H:%M:%S" >> ./check_diff.log
echo '------start------' >> ./check_diff.log
cat diff_res >> ./check_diff.log
grep '^>[[:blank:]]*fastcgi_pass[[:blank:]]*127.0.0.1:12345' diff_res > /dev/null
if [ $? -eq 0 ];
then
echo '非法更改,回退!!!' >> ./check_diff.log
cp /etc/nginx/nginx.conf.xgd /etc/nginx/nginx.conf
nginx -s reload
else
echo '合法更改,更新备份文件。' >> ./check_diff.log
cp /etc/nginx/nginx.conf /etc/nginx/nginx.conf.xgd
fi
echo '------end------\n\n' >> ./check_diff.log
fi
sleep 10
done