Ce face resolver
Numele din proxy_pass http://api.exemplu.ro; sunt rezolvate o singură dată, la pornirea sau reîncărcarea lui Nginx. Dacă IP-ul se schimbă (servicii în cloud, containere), Nginx continuă să trimită cereri la adresa veche până la următorul reload.
Când proxy_pass conține o variabilă, Nginx rezolvă numele la cerere, folosind serverele DNS din resolver, și păstrează răspunsul cât spune TTL-ul DNS (sau cât spune valid=). Fără resolver, cererea eșuează cu eroarea no resolver defined. Tot resolver este necesar pentru ssl_stapling și, din Nginx 1.27.3, pentru parametrul resolve al serverelor din upstream.
În containere Docker, serverul DNS intern este 127.0.0.11; pe sistemele cu systemd-resolved, 127.0.0.53.
Parametri
| Parametru | Descriere |
|---|---|
Context |
http, server, location (și upstream, din 1.27.3). |
adresa |
IP-ul serverului DNS (portul opțional: 10.0.0.2:5353). |
valid=timp |
Cât timp se păstrează răspunsul, în locul TTL-ului din DNS. |
ipv6=off |
Nu cere adrese IPv6 (util dacă serverul nu are conectivitate IPv6). |
resolver_timeout |
Implicit 30s. Cât așteaptă un răspuns DNS. |
Ce returnează
Nimic direct; numele sunt rezolvate prin serverele DNS date.
Exemple
Exemplul 1: Proxy spre un serviciu cu IP care se schimbă
location /api/ {
resolver 1.1.1.1 9.9.9.9 valid=60s ipv6=off;
resolver_timeout 5s;
set $api "https://api.furnizor-curierat.ro";
proxy_pass $api;
proxy_ssl_server_name on;
}
Exemplul 2: Nginx într-un container Docker
Containerul aplicatie poate fi recreat cu alt IP; Nginx îl găsește din nou fără restart.
resolver 127.0.0.11 valid=10s;
server {
listen 80;
location / {
set $aplicatie http://aplicatie:3000;
proxy_pass $aplicatie;
}
}
Exemplul 3: proxy_pass cu variabilă, fără resolver
tail -n 1 /var/log/nginx/error.log
Ieșire în terminal
2026/10/25 12:20:31 [error] 813#813: *4410 no resolver defined to resolve api.furnizor-curierat.ro, client: 86.120.14.7, server: exemplu.ro, request: "GET /api/awb/1042 HTTP/2.0", host: "exemplu.ro"
Greșeli frecvente
- Pui o variabilă în
proxy_passși uițiresolver: toate cererile dau502 Bad Gateway. - Folosești un server DNS public în rețeaua internă și numele interne (
db.intern) nu se rezolvă. Folosește serverul DNS al rețelei.
Comenzi înrudite
set: Creează sau schimbă o variabilă în configurația Nginx. Valoarea poate combina text și alte variabile.