Назад | Перейти на главную страницу

Динамический 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 может меняться много раз.

С уважением, Жуан

Поскольку ваш файл конфигурации находится в / 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.