nginx if 指令的这种用法安全吗?

nginx if 指令的这种用法安全吗?

根据他们自己的文献,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给没有有效证书的人。

相关内容