Назад | Перейти на главную страницу

Условный ssl_verify_client в NGINX

Мне нужно включить проверку сертификата клиента только для запросов из-за пределов нашей интрасети без проверки для запросов, например, из 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 здесь не разрешена

Есть ли другой способ сделать это?

Наконец я нашел решение, которое работает, как ожидалось.

В 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;
}