由 $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 内部承载后续请求,需要其自身受支持的处理方式。

相关文章