NGINX 中的条件 ssl_verify_client

NGINX 中的条件 ssl_verify_client

我需要仅对来自我们内部网外部的请求启用客户端证书验证,而无需对来自 192.168.0.0/24 等的请求进行验证。我尝试使用geo模块来定义内部子网的变量。在http上下文中:

geo $intranet { 
  default 0; 
  192.168.0.0/24 1; 
}

server上下文中

if ($intranet != 1) { 
  ssl_verify_client on; 
} 

但无法在语句ssl_verify_client中使用指令if。我收到错误:

这里不允许使用“ssl_verify_client”指令

还有其他方法可以做到这一点吗?

答案1

最后我找到了符合预期的解决方案。

http上下文中:

geo $intranet { 
  default 0; 
  192.168.0.0/23 1; 
}

server上下文中:

ssl_verify_client optional;

set $verify $intranet$ssl_client_verify;

if ($verify ~ (0NONE|0FAILED)) {
  return 403;
}

相关内容