Conservar rutas codificadas en una ruta de reenvío HTTP de NGINX existente
Use request_uri cuando el contrato de reenvío necesite la ruta y la consulta originales, manteniendo la validación de destino existente.
Una ruta construida a partir de $uri puede enviar una ruta distinta de la que proporcionó el cliente. Para http://service.example/files/a%2Fb?view=raw, la barra escapada forma parte de esa escritura original.
| Variable | Representación |
|---|---|
| $uri | El URI normalizado actual, que puede cambiar durante el procesamiento interno |
| $request_uri | El URI original de la solicitud, incluidos sus argumentos de consulta |
En una disposición existente de proxy de reenvío HTTP que ya selecciona y valida la autoridad de destino, la ruta y la consulta originales pueden conservarse con:
proxy_pass http://$http_host$request_uri;$http_host proporciona la autoridad del encabezado Host seleccionada en esta disposición. Mantenga las restricciones de cliente del oyente, la política de destino y la configuración de resolución de nombres.
Sustituir $uri$is_args$args por esta expresión cambia la representación enviada; la anterior usa la ruta normalizada y los argumentos actuales. Elija según el contrato del punto final, sobre todo cuando los delimitadores escapados importan o una firma cubre el objetivo original. La reescritura deliberada de la ruta tiene un requisito distinto.
Esto se aplica a la solicitud HTTP visible. Un túnel HTTPS CONNECT transporta la solicitud posterior dentro de TLS y requiere su propio manejo compatible.