NGINX 地理模块上的动态 IP 无需重启

NGINX 地理模块上的动态 IP 无需重启

我想在 Capistrano 部署上创建一个任务,将我的公共 IP 放在我的 NGINX 服务器的地理模块配置中,而无需重新启动 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 可能会多次更改。

问候,若昂

答案1

由于您的配置文件位于 /etc/nginx,我假设您使用某种基于 Debian 的 Linux 版本。

我基本上会在部署时备份并替换 ip_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

然后,您可以通过执行以下操作将配置重新加载到 Nginx 中,而不会丢失任何请求:

sudo service nginx reload或者sudo /etc/init.d/nginx reload

这将在完成时杀死所有使用旧配置的 worker,并启动所有使用新配置的新 worker。这样你就不会丢失任何请求

只需确保您能够以 Capistrano 提升的权限运行您的命令,因为这对于重新加载/重新启动 Nginx 是必要的。

相关内容