Я хочу создать задачу в моем развертывании 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 может меняться много раз.
С уважением, Жуан
Поскольку ваш файл конфигурации находится в / 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.