中止请求并根据变量“返回;”(不使用 if?)

中止请求并根据变量“返回;”(不使用 if?)

我拥有的:

# nginx.conf
http {
    map "$request_uri" $abort {
        default 0;
        "~*example" 1;
    }
    include sites-enabled/*.conf;
    # etc
}
# sites-enabled/example.com.conf
server {
    listen 80;
    location ~ \.js {
        if ($abort = 1) {
            return 500;
        }
    }
    # etc
}
# sites-enabled/example.net.conf
# sites-enabled/example.org.conf
# etc.

问题是什么:

  • 我用了map因为if 是邪恶的。现在,$abort有了一个flag,知道是否继续进行。
  • 除了在语句中之外,我不知道如何使用该变量if这些评论确认。
  • 一个if仅允许不超过上下文server{}。我有 12 个站点,server{}每个站点 3 个。

我想要的是:

评估$abort并告诉 Nginx 处于return 500共享http {}级别的某个地方。

if避免对server {}每个虚拟主机进行重复。

我知道我可以将 放入ifegsnippets/abort.conf并包含它,但这似乎很混乱,浪费资源。我希望有更优雅的方法。你知道吗?

相关内容