我想在我的Capistrano部署上创build一个任务,将我的公网IPconfiguration到我的NGINX服务器的地理模块configuration上,而不用重启NGINX,可以吗? 例如,我的/etc/nginx/nginx.conf:
geo $geo { default no; include /home/deploy_user/appname/shared/ip_list; }
我将在部署期间提供/ home / deploy_user / appname / shared / ip_list文件。 我需要这个,因为我的公共IP可以改变很多次。
问候,若昂
由于你的configuration文件位于/ etc / nginx中,我假设你使用某种基于Debian的Linux。
我会基本上备份和replaceip_list像这样的东西:
cd /home/deploy_user/appname/shared/ip_list
mv ip_list ip_list`date +"%Y%m%d%H%M%S"`
cp <path to new ip_list> ip_list
然后,您可以将您的configuration重新加载到Nginx中,而无需发出任何请求:
sudo service nginx reload或sudo /etc/init.d/nginx reload 。
这样会在完成旧configuration时closures任何工人,并使用新configuration启动所有新工人。 这样你就不会失去任何请求
只要确保你可以用Capistrano的提升特权运行你的命令,因为这是重新加载/重新启动Nginx所必需的。