如何在 nginx 中配置以允许 ip 和可选的客户端证书

如何在 nginx 中配置以允许 ip 和可选的客户端证书

以下案例:

我需要配置我的 nginx,以便某些 IP 可以访问它,或者您需要它的证书。

server {
   . . .
   ssl_verify_client optional;
   location  /admin {
      allow XXX.XXX.XXX.XXX;
      if ($ssl_client_verify != SUCCESS) {
         return 403;
        }
      deny all;
      }
   }

适用于 IP,但是当我想在位置内添加证书 if 条件时,我当然会收到 403 错误,因为我的具有 IP 的工作站没有证书。有什么办法可以得到 X OR Y 吗?

谢谢!

编辑:

以一种肮脏的方式解决了它......

location  /admin {
  set $var_cert 0;

  if ($ssl_client_verify = SUCCESS) {
     set $var_cert 1;
  }

  if ($remote_addr = XXX.XXX.XXX.XXX)  {
    set $var_cert 1;
  }

  if ($remote_addr = XXX.XXX.XXX.XXY)  {
    set $var_cert 1;
  }

  if ($var_cert = 0){
     return 403;
   }

  proxy_pass http://172.16.0.54/admin;


}

嗯,它有效。

相关内容