在现有 NGINX HTTP 转发路由中保留编码路径
当转发契约需要原始路径和查询时使用 request_uri,同时保留现有的目标校验。
由 $uri 构建的路由可能发送与客户端所提供的不同的路径。对于 http://service.example/files/a%2Fb?view=raw,被转义的斜杠是原始写法的一部分。
| 变量 | 表示 |
|---|---|
| $uri | 当前规范化后的 URI,它可能在内部处理过程中发生变化 |
| $request_uri | 原始请求 URI,包括其查询参数 |
在已经选择并校验目标权威的现有 HTTP 正向代理配置中,可以用以下方式保留原始路径和查询:
proxy_pass http://$http_host$request_uri;$http_host 在此配置中提供所选 Host 头的权威。请保留监听器的客户端限制、目标策略和名称解析配置。
用此表达式替换 $uri$is_args$args 会改变所发送的表示;前者使用规范化后的路径和当前参数。请根据端点契约选择,尤其是当被转义的分隔符很重要或签名覆盖原始目标时。有意的路径重写则有不同要求。
这适用于可见的 HTTP 请求。HTTPS CONNECT 隧道在 TLS 内部承载后续请求,需要其自身受支持的处理方式。