21 Giu

Capire nginx $request_uri

  • Webhosting24 Team
  • Hosting
  • 0 Commenti

Poiché noi stessi ci siamo imbattuti spesso in questa domanda, ho deciso di scrivere un breve articolo sulla gestione di $request_uri di nginx. Secondo la documentazione ngx_http_core_module, la variabile è definita come:

full original request URI (with arguments)
(URI della richiesta originale completa (con argomenti)

Esempi pratici di $request_uri

Anche se questo sembra chiaro a prima vista, non è ben definito. Abbiamo fatto alcune prove e possiamo spiegarlo meglio con esempi usando casi reali:

  1. Per l’URL:
    https://www.webhosting24.it/capire-nginx-request_uri/
    la variable nginx $request_uri è popolate come segue:
    /capire-nginx-request_uri/
  2. Per l’URL:
    https://console.webhosting24.com/cart.php?a=add&domain=register
    la variabile nginx $request_uri è popolata come segue:
    /cart.php?a=add&domain=register
  3. Per l’URL:
    https://www.w3.org/Protocols/rfc2616/rfc2616-sec3.html#sec3.2
    la variabile nginx $request_uri verrebbe comunque popolata solo come segue:
    /Protocols/rfc2616/rfc2616-sec3.html
    poiché #sec3.2 è solo un frammento/commento/ancora e non fa parte dell’URI.

In poche parole, $request_uri contiene il percorso completo (/capire-nginx-request_uri/ nell’esempio 1 o /cart.php nell’esempio 2 sopra) e qualsiasi stringa di argomento presente (“?a=add&domain=register” nell’esempio 2 sopra), ma esclude lo schema (https:// e la porta (implicita 443) in entrambi gli esempi sopra) come definito da RFC per l’URL:

http_URL = "http(s):" "//" host [ ":" port ] [ abs_path [ "?" query ]]

Uniform Resource Identifiers

(Identificatori di risorse uniformi)
Negli RFC gli URI hanno molti nomi: indirizzi WWW, Universal Document Identifier, Universal Resource Identifier e infine la combinazione di Uniform Resource Locator (URL). Per quanto riguarda HTTP, gli Uniform Resource Identifier sono semplicemente stringhe formattate che identificano, tramite nome, posizione o qualsiasi altra caratteristica, una risorsa.

Ulteriori fonti:
https://www.w3.org/Protocols/rfc2616/rfc2616-sec3.html#sec3.2
http://nginx.org/en/docs/http/ngx_http_core_module.html#var_request_uri