有可能有 2 个具有相同匹配条件的 nginx 位置块吗?

有可能有 2 个具有相同匹配条件的 nginx 位置块吗?

例如,如果我想将防止热链接块与缓存定义块分离,并将它们放在单独的.conf文件中,以便稍后由 main.conf 包含,那么 nginx 是否只会匹配第一个?

location ~* \.(?:jpg|jpeg|gif|png|ico)$ {

        valid_referers none blocked somedomain.com;
        if ($invalid_referer) {
            return 403;
        }

}

...

location ~* \.(?:jpg|jpeg|gif|png|ico)$ {

        expires 1M;
        add_header Cache-Control "public";

}

答案1

不,我不认为这可行,因为 nginx 处理配置文件的方式不同。处理请求时,nginx 会匹配单个位置块。因此,如果您有多个具有相同匹配条件的位置块,则只会使用第一个块的内容。查看 nginx 阶段文档:

http://wiki.nginx.org/HttpCoreModule#location

相关内容