You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

关于Nginx中$request_uri变量准确定义的权威咨询

关于Nginx中$request_uri变量准确定义的权威咨询

我完全懂你的困惑——Nginx文档里那句“full original request URI (with arguments)”乍一看确实容易让人误以为它包含协议、主机这些完整URL的部分,但实际使用时却发现只有路径和查询参数,这种反差太挠头了!

其实咱们得先理清URI和URL的区别:URI是“统一资源标识符”,用来标识资源的位置;而URL是“统一资源定位符”,是URI的子集,包含了协议、主机等完整定位信息。Nginx里的$request_uri对应的是HTTP请求行里的URI部分,也就是客户端发送请求时,请求行里跟在请求方法(GET/POST等)后面的那串内容,它不包含协议、主机和端口。

举个实际的例子:如果用户发起的请求是https://example.com/blog/article?id=123,那么Nginx里的$request_uri的值就是/blog/article?id=123,而完整的URL需要你用$scheme://$host$request_uri来拼接(其中$scheme是协议,$host是请求的主机名)。

关于权威说明,虽然Nginx官方文档的变量描述比较简洁,但在核心模块的官方定义里,$request_uri明确指向“请求行中的原始URI,包含查询参数”——它就是请求发过来时,除了方法和HTTP版本之外的那部分原始内容,完全不会涉及协议和主机,因为那部分是在请求头的Host字段里,不属于URI的范畴。

如果你想验证的话,也可以在Nginx配置里加个简单的测试:

location /test-uri {
    echo "request_uri: $request_uri";
    echo "full URL: $scheme://$host$request_uri";
}

访问https://your-domain.com/test-uri?foo=bar,就能看到$request_uri只返回/test-uri?foo=bar,而完整URL才是带协议和主机的版本。

备注:内容来源于stack exchange,提问作者preferred_anon

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.22 08:24:32