IPおよびオプションのクライアント証明書を受け入れるようにnginxで設定する方法

IPおよびオプションのクライアント証明書を受け入れるようにnginxで設定する方法

次の場合:

特定のIPがアクセスできるようにnginxを設定する必要があります。それ以外の場合は、対応する証明書が必要です。

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

IPに対して機能しますが、ロケーションif条件内に証明書を追加しようとすると、もちろんIPを含むワークステーションに証明書がないため、403エラーが発生します。 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;


}

まあ、動作します。

関連情報