Nginx restart failed из-за смены локального ip провайдером. Решение

25 февраля 2020 г.

Иногда в дата центрах производится обновление оборудования с вынужденной сменой локального ip. Вследствии чего nginx перестает работать с ошибкой:

nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: [emerg] bind() to 10.8.121.203:80 failed (99: Cannot assign requested address)
nginx: configuration file /etc/nginx/nginx.conf test failed

Я расскажу как быстро все исправить на сервере с установленной VestaCP.

Узнаем новый локальный ip

В том случае если у вас VestaCP. Заходим в панель, вверху переходим по ссылке “IP”. Там выбираем существующую запись со старым ip и нажимаем “reread IP”. Теперь VestaCP знает новый ip и мы тоже.

vestacp

Другой вариант, если у вас нет VestaCP.

Вводим в консоли ifconfig или более современный вариант ip addr show и получаем такой ответ:

eth0      Link encap:Ethernet  HWaddr de:2e:4c:1f:60:2d
          inet addr:10.19.82.89  Bcast:10.19.82.89  Mask:255.255.255.254
          inet6 addr: fe80::dc2e:4cff:fe1f:602d/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:186354 errors:0 dropped:0 overruns:0 frame:0
          TX packets:166552 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:24624828 (24.6 MB)  TX bytes:185543285 (185.5 MB)

lo        Link encap:Local Loopback
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:65536  Metric:1
          RX packets:71602 errors:0 dropped:0 overruns:0 frame:0
          TX packets:71602 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1
          RX bytes:50340449 (50.3 MB)  TX bytes:50340449 (50.3 MB)

Там видим, что наш новый локальный ip – 10.19.82.89

Замена старого ip на новый

Теперь ищем все упоминания старого ip в файлах конфигурации. Для этого вводим в консоли

# grep -rl 10.8.121.203 /etc
/etc/apache2/mods-enabled/remoteip.conf
/etc/apache2/mods-enabled/rpaf.conf

Меняем во всех найденных файлах старый ip на новый. То же для папки /usr. Если grep ничего не находит в папке /usr, то это нормально для VestaCP – она сама внесла изменения

find /home \( -name "*.conf" \) -type f -exec sed -i 's/10.8.121.203/10.19.82.89/g' {} \;

Команда выше меняет ip во всех файлах конфигурации в папке /home.

Остается перезапустить apache и nginx

apachectl restart
service nginx restar

 

Теги: рубрика Tutorials