根据他们自己的文献,if
是邪恶的。他们给出了几个例子,说明如果使用指令,某些配置将无法工作if
。他们没有详细说明为什么它的行为与用户预期的不同,也没有给出如何重写这些实例的例子。
然而他们所做的是链接到本文,它给出了一个基本的解释,即指令if
内的指令location
会创建另一个“伪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
给没有有效证书的人。