Пусть у нас хост на линуксе, старый nginx слушает порт 8080, новый 8081,
  действует правило перенаправления 80->8080, после старта второго nginx
  заменяем правило командочкой

  iptables -t nat -R PREROUTING 1 -p tcp --dport 80 -j REDIRECT --to-port 8081

  и ждём, когда все соединения со старым nginx'ом будут обработаны и
  закрыты, после чего старый nginx гасим.

  В других операционках пакетный фильтр управляется иначе, но схема та же

Хост на линуксе. На 80 порту слушает не только nginx. У nginx'а несколько IP адресов, не всегда известных. Конфигов с виртуалхостами около 10 тысяч. Получается нужно еще каждый раз во всех 10к конфигах менять порт, на котором слушаем? При этом избежать ситуации, когда в этот момент реалодится основной nginx(если предполагаем, что конфиги разделяемые).

Для трех виртуалхостов наверное норм решение.

Еще нужно потом будет управлять этими правилами.

У нас подобная схема работает для контейнеров с MySQL, там это удобно. Для nginx'а не очень подходит.

_______________________________________________
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru

Ответить