nginx не может разрешить имена вышестоящих при перезагрузке, даже если они разрешаются ОС

9

При перезагрузке конфигурации (специально для proxy_pass) - иногда это будет видно: nginx: [emerg] хост не найден в апстриме

Однако - имя вышестоящего сервера разрешается в ОС (linux) - только nginx, похоже, имеет эту проблему.

Похоже, что это недавний регресс, поскольку этого не произошло до версий 1.0.10.

Кто-нибудь заметил это недавно?

Попытка сузить места для поиска.

Майкл Нил
источник

Ответы:

6

Nginx внутренне кэширует DNS в течение 5 минут (не уверен, что это можно настроить в более поздних версиях). Возможно, ваш распознаватель по какой-то причине не работает, тогда Nginx кеширует этот результат.

Я видел это в системах с включенным протоколом IPv6, поскольку по умолчанию распознаватель параллельно запрашивает записи IPv4 и IPv6. Это может восприниматься распознавателем как поток, приводящий к временной проблеме DNS. Я видел это всплывающее окно на ящике с большим почтовым трафиком при проверке доменного имени.

Попробуйте добавить:

  options single-request

в /etc/resolv.conf

Это приводит к тому, что поиск IPv6 / v4 выполняется последовательно.

jeffatrackaid
источник
Спасибо за Ваш ответ. Оказалось, что это была ошибка с путаницей имен хостов в файлах конфигурации. К сожалению. Но ваш ответ на самом деле действительно полезен в любом случае - поэтому я отмечу его как правильный - так как он наверняка вызовет проблемы с DNS (уничтожение запросов).
Майкл Нил
2
У меня та же проблема - что именно вы делали в конфигурационных файлах, чтобы это исправить (заранее спасибо)
Zabs
Теперь вы можете добавить value=30sопцию в, resolverчтобы определить, как долго разрешенный IP-адрес должен храниться в resolverкешах.
Алексис