Динамический IP на геомодуле NGINX без перезапуска
Я хочу создать задачу на моем развертывании 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, я предполагаю, что вы используете какую-то разновидность Linux на основе Debian.
Я бы в основном сделал резервную копию и заменил бы 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
,
Это убьет всех рабочих со старой конфигурацией, когда они закончат, и запустит всех новых рабочих с вашей новой конфигурацией. Таким образом, вы не потеряете ни одного запроса
Просто убедитесь, что вы можете запустить свою команду с повышенными привилегиями из Capistrano, поскольку это необходимо для перезагрузки / перезапуска Nginx.