我拥有的:
# 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 {}
每个虚拟主机进行重复。
我知道我可以将 放入if
egsnippets/abort.conf
并包含它,但这似乎很混乱,浪费资源。我希望有更优雅的方法。你知道吗?