Согласно собственной документации, if
есть зло. Они привели несколько примеров того, что определенные конфигурации не будут работать, если используется директива if
. Они не вдавались в подробности о том, почему он ведет себя не так, как может ожидать пользователь, или приводят примеры того, как переписать эти экземпляры.
То , что они делают , однако, сделать ссылку на эту статью, которая дает элементарное объяснение , что if
-directive в location
-directive создает другое «псевдо- location
который игнорирует другие блоки location
Однако примеры кажутся мне нелогичными, даже с объяснениями. Поэтому я хотел знать, безопасна ли моя конкретная конфигурация, и если нет, то как ее лучше переписать. Конечно, я провел собственное тестирование, и, похоже, оно ведет себя правильно. В следующем примере показан только соответствующий файл конфигурации:
ssl_client_verify optional;
location /public {
try_files $uri $uri/ =404;
}
location / {
if ($ssl_client_verify != SUCCESS)
{
return 403;
}
try_files $uri $uri/ =404;
}
Моя главная проблема безопасности заключается в том, что я хочу не раскрывать содержимое, которое не является /public
кому-либо, у кого нет действующего сертификата.