NGINX获取位置中请求的http版本
在nginx配置中,如果请求的http版本不存在或<1,我想返回401。 如下所示:-NGINX获取位置中请求的http版本,nginx,nginx-reverse-proxy,nginx-config,nginx-location,nginx-ingress,Nginx,Nginx Reverse Proxy,Nginx Config,Nginx Location,Nginx Ingress,在nginx配置中,如果请求的http版本不存在或
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;}
。