Nginx nie rozpoznaje nazw nadrzędnych przy przeładowaniu, nawet jeśli rozpoznają je przez system operacyjny

9

Podczas przeładowywania config (szczególnie dla proxy_pass) - czasami będzie to widoczne: nginx: nie znaleziono hosta [emerg] w górę

Jednak - nazwa serwera nadrzędnego rozwiąże się w systemie operacyjnym os (linux) - wydaje się, że tylko nginx ma ten problem.

To wydaje się być ostatnią regresją - ponieważ nie zdarzyło się to wcześniej niż w wersjach 1.0.10.

Czy ktoś to ostatnio zauważył?

Próba zawężenia miejsc do wyszukiwania.

Michael Neale
źródło

Odpowiedzi:

6

Nginx wewnętrznie buforuje DNS przez 5 minut (nie jestem pewien, czy można to skonfigurować w późniejszych wersjach). Być może z jakiegoś powodu twój resolver zawodzi, a następnie Nginx zapisuje ten wynik w pamięci podręcznej.

Widziałem to w systemach z włączoną IPv6, ponieważ domyślnie resolver żąda zarówno rekordów IPv4, jak i IPv6 równolegle. To może być postrzegane jako zalew przez resolver, powodujący tymczasowy problem z DNS. Widziałem to okienko wyskakujące na pudełku z dużym ruchem e-mail podczas weryfikacji nazwy domeny.

Spróbuj dodać:

  options single-request

do /etc/resolv.conf

Powoduje to, że wyszukiwania IPv6 / v4 są wykonywane sekwencyjnie.

jeffatrackaid
źródło
Dzięki za odpowiedź. Okazało się, że był to błąd związany z pomieszaniem nazw hostów w plikach konfiguracyjnych. Ups Ale i tak twoja odpowiedź jest naprawdę przydatna - więc zaznaczę ją jako właściwą - na pewno spowodowałoby to problemy z DNS (wysadzenie jej żądaniami).
Michael Neale,
2
Mam ten sam problem - co dokładnie zrobiłeś w plikach konfiguracyjnych, aby to naprawić (z góry dziękuję)
Zabs
Możesz teraz dodać value=30sopcję, aby resolverokreślić, jak długo rozstrzygnięty adres IP powinien być przechowywany w resolverpamięci podręcznej.
Alexis Wilke