nginx request_uri到底是什么?

nginx request_uri到底是什么?

我正在尝试了解$request_uringinx 配置中的变量。文档说

完整的原始请求 URI(带参数)

对我来说,这似乎完全没有歧义 - 它应该是整个请求的 URI,包括主机和协议。但在实际使用中,它似乎只包含路径和查询参数。是否有任何权威来源确切说明 nginx 将什么视为 request_uri?我在文档中找不到任何其他参考资料,我试图将其从源代码中取出,但没有注释,很难理解整体结构。

答案1

请求URI并不是指RFC 3986URI,但它是一个来自RFC 2616,5.1.2HTTP/1.1标准草案从 1999 年开始。

请求URI在 RFC 2616 中可能是以下任一种:

Request-URI = "*" | absoluteURI | abs_path | authority

此处,absoluteURI相当于 RFC 3986 URI,主要用于 HTTP 代理。Søren Løvborg 在Stack Overflow 上的答案为什么在这个上下文中不需要完整的 URI:

在普通的 HTTP 请求中,URL 方案和主机在发送请求时就已经处理好了(并且 URL 片段在 HTTP 协议级别根本不存在),这意味着 Request-URI 是一个路径绝对 URL 字符串,可能随后?URL 查询字符串

请求URI似乎被(更明确的)术语取代请求目标RFC 7230, 3.1.1 拟议标准从 2014 年开始,请求行...

以方法标记开头,后跟一个空格 ( SP)、request-target、另一个空格 ( SP)、协议版本,最后以 结尾CRLF

request-line = method SP request-target SP HTTP-version CRLF

请求目标术语也用于RFC 9110, 7.1互联网标准(2022 年 6 月);URI 参考定义在RFC 9110, 4.1

相关内容