return în Nginx

Oprește procesarea cererii și trimite imediat clientului un cod de stare HTTP, o redirecționare sau un text scurt.

Sintaxă
return cod [text];
return cod URL;
return URL;

Ce face return

Directiva return oprește imediat procesarea cererii și trimite răspunsul către client. Nu evaluează nicio expresie regulată, deci este mai simplă și mai rapidă decât rewrite ori de câte ori nu ai nevoie să transformi calea cu grupuri regex.

Pentru redirecționări (codurile 301, 302, 303, 307, 308), al doilea argument este interpretat ca URL pentru antetul Location. Dacă scrii doar un URL care începe cu http:// sau https:// fără cod, Nginx folosește implicit codul 302 (redirecționare temporară).

Pentru alte coduri (200, 403, 404, 503), al doilea argument opțional este chiar corpul răspunsului (util pentru un /healthz rapid sau un mesaj scurt). Codul nestandard 444 este specific Nginx: închide conexiunea TCP fără a trimite niciun octet clientului.

Opțiuni și argumente

Opțiune / Parametru Descriere
Context: server, location, if Poate fi pus direct în server (de exemplu pentru redirecționarea întregului domeniu) sau în location.
301 URL Redirecționare permanentă (Moved Permanently); browserele și motoarele de căutare o memorează.
302 URL Redirecționare temporară (Found); utilă în teste sau pentru pagini temporare.
307 / 308 URL Redirecționare temporară (307) sau permanentă (308) care păstrează obligatoriu metoda HTTP și corpul cererii (de exemplu POST rămâne POST).
200 "text" Trimite un răspuns 200 cu textul dat.
444 Cod intern Nginx: închide conexiunea imediat, fără antete HTTP.

Exemple

Exemplul 1: Redirecționarea www către domeniul fără www

Un bloc server separat este mai curat și mai rapid decât un if ($host = ...):

server {
    listen 80;
    listen 443 ssl;
    server_name www.example.com;

    ssl_certificate     /etc/letsencrypt/live/example.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;

    return 301 https://example.com$request_uri;
}

Exemplul 2: Endpoint /healthz direct din Nginx, fără backend

Util pentru verificările de sănătate ale unui load balancer:

location = /healthz {
    access_log off;
    default_type text/plain;
    return 200 "ok\n";
}

Exemplul 3: Redirecționarea unei pagini vechi către una nouă

Potrivire exactă cu location = și return 301:

location = /contact.html {
    return 301 /despre-noi/contact/;
}

Greșeli frecvente

  • Folosirea $uri în loc de $request_uri în redirecționări: $uri nu conține șirul de interogare (?id=10) și este deja decodat; $request_uri păstrează exact calea și parametrii trimiși de client.
  • Testarea redirecționărilor cu 301 în browser: browserul memorează agresiv un 301 și nu mai întreabă serverul chiar dacă ai schimbat configurația. Testează cu 302 sau cu curl -I, și pune 301 la final.
  • Folosirea 301/302 pentru un API care primește cereri POST: multe clienți transformă POST în GET la redirecționare; folosește 308 (permanent) sau 307 (temporar).

Comenzi înrudite

  • rewrite: Modifică URI-ul cererii pe baza unei expresii regulate, pentru redirecționări externe sau rescrieri interne.
  • Redirecționare HTTP → HTTPS: Tiparul recomandat pentru redirecționarea traficului de pe portul 80 pe HTTPS (și canonizarea cu sau fără www).
  • server_name: Stabilește numele de domeniu (antetul Host) pentru care răspunde un bloc server.
  • location: Potrivește calea URI a cererii (exact, cu prefix sau cu expresie regulată) și aplică regulile corespunzătoare.
Comunitate & Schimb de cunoștințe

Întrebări & Exemple de Cod: return

Ai o nelămurire despre utilizarea comenzii return sau ai descoperit un truc / fragment de cod util? Distribuie-l cu ceilalți programatori!

💬

Fii primul care pune o întrebare sau distribuie un fragment de cod / prompt!

Nu au fost adăugate încă întrebări sau exemple de cod pentru această pagină. Dacă ai întâlnit o problemă sau ai un snippet util, adaugă-l mai jos pentru a-i ajuta pe ceilalți.

Comunitate Adaugă o întrebare sau distribuie un cod

Moderare & Siguranță:

Pentru a menține calitatea și securitatea informațiilor, fiecare întrebare sau fragment de cod/prompt este analizat (manual sau prin moderare asistată de AI) înainte de publicare.