Nginx restart failed из-за смены локального ip провайдером. Решение
Иногда в дата центрах производится обновление оборудования с вынужденной сменой локального 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.
Вводим в консоли 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