你如何确定何时使用$request_urivs $uri?
根据NGINX文档,$request_uri是原始请求(例如,/foo/bar.php?arg=baz包括参数,不能修改),但是$uri引用了更改的URI.
如果URI没有改变,$ uri = $ request_uri?
使用时是不正确的,更好的还是更糟的:
map $uri $new_uri {
  # do something
}
VS
map $request_uri $new_uri {
  # do something
}
Ric*_*ith 37
$uri不等于$request_uri.
该$uri变量设置nginx为当前正在处理的URI - 但它也需要进行规范化,包括:
?和查询字符串/字符由单个字符替换/值$request_uri始终是原始URI,不受上述任何规范的约束.
大多数时候你会使用$uri它,因为它是标准化的.用$request_uri在错误的地方可能会导致URL编码的字符,成为双重编码.
如果需要匹配URI及其查询字符串,请$request_uri在map指令中使用.
关于另一个不同之处$uri,并$request_uri在proxy_cache_keyIS   $request_uri将包括anchor tags part,但$uri$is_args$args会将其忽略
进行卷曲操作curl -I static.io/hello.htm?id=1#/favor/goods::
proxy_cache_key $scheme://$host$uri$is_args$args; => Cache KEY: http://static.io/hello.htm?id=1
proxy_cache_key $scheme://$host$request_uri; => Cache KEY: http://static.io/hello.htm?id=1#/favor/goods
Nginx文档:http : //nginx.org/en/docs/http/ngx_http_core_module.html#var_request_uri
$request_uri :完整的原始请求URI(带有参数) $uri:请求中的当前URI,已规范化$ uri的值可能在请求处理过程中发生更改,例如,进行内部重定向或使用索引文件时。代理缓存密钥:http : //nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_cache_key
| 归档时间: | 
 | 
| 查看次数: | 39527 次 | 
| 最近记录: |