Nginx не удалось запустить. Не удается присвоить запрошенный адрес?

Когда я перезагружаю свой server (а не nginx, весь server), Nginx не запускается автоматически. После inputа в server я могу запустить nginx вручную (запуск службы nginx). Оно работает. Но если я снова перезапущу, мне придется вручную запустить Nginx. При проверке error.log для Nginx я viewел эту ошибку несколько раз:

2012/08/27 09:19:23 [emerg] 1066#0: bind() to [ipv6]:80 failed (99: Cannot assign requested address) 

Как я могу это исправить? Что это за проблема? (Im работает server Ubuntu 12.04)

bind () на [ipv6]: 80 не удалось (99: не может назначить запрошенный адрес)

Похоже, ваш адрес IPv6 только что был назначен eth0 и все еще находится в предварительном состоянии , поэтому Nginx не может установить прослушивание на этом IP-адресе.

Любой поворот DAD ( Duplicate Address Detection ) выполняется:

 sysctl -w net.ipv6.conf.eth0.dad_transmits=0 

(вставить в /etc/sysctl.conf для постоянной)

или добавить эту строку в /etc/network/interfaces , в соответствии с определением interfaceа inet6

 post-up while ip -6 addr show tentative | grep . > /dev/null ; do sleep 1 ; done 

Источник: http://pyro.eu.org/how-to/micro/nginx-cannot-assign-requested-address-ipv6.txt

У меня были подобные симптомы, но у меня была другая configuration. Сервер запускает Debian Wheezy со статическим адресом IPv4 и адресом IPv6.

 # /etc/network/interfaces auto lo eth0 iface lo inet loopback iface eth0 inet static address 192.0.2.3 netmask 255.255.255.0 gateway 192.0.2.1 iface eth0 inet6 static address 2001:db8::3 netmask 64 gateway 2001:db8::1 

При каждой загрузке nginx не запускался:

 bind() to [2001:db8::3]:80 failed (99: Cannot assign requested address) 

Ручное начало работ прекрасное и ручное обследование также показало, что указаны адреса и routes. Просто работала настройка адреса IPv6 в interfaces (без адреса IPv4). Сработало удаление статического шлюза IPv6, но затем используется адрес локального шлюза. После дальнейшей отладки я обнаружил, что process загрузки выплюнул:

 RTNETLINK answers: File exists Failed to bring up eth0. Ответы RTNETLINK: существует file RTNETLINK answers: File exists Failed to bring up eth0. 

Оказывается, адрес маршрутизатора IPv6 и шлюз автоматически назначаются маршрутизатором при поднятии interfaceа. Чтобы избежать такого поведения, установите accept_ra 0 в iface eth0 inet6 . Раздел inet6 также должен быть перемещен до того, как секция inet или маршрут по умолчанию все равно inet6 на локальный адрес ссылки.

На моих хостах Ubuntu 14.04 мне просто нужно было переместить запись IPv6 (inet6) ПЕРЕД записью IPv4 (inet).

Итак, это работает:

 auto eth0 iface eth0 inet6 static address fd57:c87d:f1ee:2::6 netmask 64 up /sbin/ip -6 route add fd57:c87d:f1ee::/48 via fe80::1 dev $IFACE iface eth0 inet static address 10.0.3.29 netmask 255.255.255.0 gateway 10.0.3.1 dns-nameserver 10.0.3.1 
Давайте будем гением компьютера.