Préserver les chemins encodés dans une route de transfert HTTP NGINX existante
Utilisez request_uri lorsque le contrat de transfert exige le chemin et la requête d'origine, en conservant la validation de destination existante.
Une route construite à partir de $uri peut envoyer un chemin différent de celui fourni par le client. Pour http://service.example/files/a%2Fb?view=raw, la barre oblique échappée fait partie de cette écriture d'origine.
| Variable | Représentation |
|---|---|
| $uri | L'URI normalisé actuel, qui peut changer pendant le traitement interne |
| $request_uri | L'URI d'origine de la requête, y compris ses arguments de requête |
Dans une configuration de proxy de transfert HTTP existante qui sélectionne et valide déjà l'autorité de destination, le chemin et la requête d'origine peuvent être préservés avec :
proxy_pass http://$http_host$request_uri;$http_host fournit l'autorité de l'en-tête Host sélectionnée dans cette configuration. Conservez les restrictions client de l'écouteur, la politique de destination et la configuration de résolution de noms.
Remplacer $uri$is_args$args par cette expression change la représentation envoyée ; l'ancienne utilise le chemin normalisé et les arguments actuels. Choisissez selon le contrat du point de terminaison, surtout lorsque les délimiteurs échappés comptent ou qu'une signature couvre la cible d'origine. La réécriture délibérée du chemin répond à une autre exigence.
Cela s'applique à la requête HTTP visible. Un tunnel HTTPS CONNECT transporte la requête ultérieure dans TLS et nécessite sa propre prise en charge.