Динамический 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.

Другие вопросы по тегам