NGINX获取位置中请求的http版本

NGINX获取位置中请求的http版本,nginx,nginx-reverse-proxy,nginx-config,nginx-location,nginx-ingress,Nginx,Nginx Reverse Proxy,Nginx Config,Nginx Location,Nginx Ingress,在nginx配置中,如果请求的http版本不存在或

在nginx配置中,如果请求的http版本不存在或<1,我想返回401。 如下所示:-

location / {
   if ($requestHttpVersion = '' OR $requestHttpVersion != 1.1){
    return 401;
    }
}
如何实现这一点?

您应该检查内置的nginx变量,该变量包含完整的原始请求行,通常类似于
GET HTTP/

if($request!~\sHTTP/1\.1$){
返回401;
}
您应该检查内置的nginx变量,该变量包含完整的原始请求行,通常类似于
GET HTTP/

if($request!~\sHTTP/1\.1$){
返回401;
}

这很有效,我相信这是一个更好的解决方案

http{
    map $server_protocol $httpVersion {
            default "invalid";
            HTTP/1.1 "valid";
            HTTP/1.0 "valid";
            HTTP/2.0 "valid";
    }

    location / {
        if ( $httpVersion = "invalid" )
        {
            return 401;
        }
        proxy_pass ....
        ...
    }
}

这是可行的,我相信这是一个更好的解决方案

http{
    map $server_protocol $httpVersion {
            default "invalid";
            HTTP/1.1 "valid";
            HTTP/1.0 "valid";
            HTTP/2.0 "valid";
    }

    location / {
        if ( $httpVersion = "invalid" )
        {
            return 401;
        }
        proxy_pass ....
        ...
    }
}

我不是说“标题”这个版本。我说的是作为请求的一部分发送的头。我想知道是否在任何nginx中都设置了这一点variables@CarlssonEvert所有HTTP请求头都可以通过变量访问,您的示例使用了
$HTTP\u version
变量,这就是我提到的原因。感谢您指出-我将编辑变量名以防止混淆似乎有更好的方法-映射$server_protocol$prot{default“null”;HTTP/1.1 yes;HTTP/1.0 yes;HTTP/2.0 yes;}加载项位置块:if($prot=“null”){return 504;}我不是说版本“Header”.我说的是作为请求一部分发送的标头。我想知道是否在任何nginx中都设置了该标头variables@CarlssonEvert所有HTTP请求头都可以通过变量访问,您的示例使用了
$HTTP\u version
变量,这就是我提到的原因。感谢您指出这一点-我将编辑变量能够防止混淆的名称似乎有更好的方法-映射$server_protocol$prot{default“null”;HTTP/1.1 yes;HTTP/1.0 yes;HTTP/2.0 yes;}加载项位置块:if($prot=“null”){return 504;}实际上,这看起来是一个更好的解决方案,以前不知道
$server\u protocol
变量。更优化的解决方案是
map$server\u protocol$disallow\u access{HTTP/1.0”“;HTTP/1.1”“;HTTP/2.0”“;default 1;}
if($disallow\u access){return 401}
。事实上,这看起来是一个更好的解决方案,以前不知道
$server\u protocol
变量。一些更优化的解决方案是
map$server\u protocol$disallow\u access{HTTP/1.0”“;HTTP/1.1”“;HTTP/2.0”“;default 1;}
if($disallow\u access){return 401;}