跨站点共享 nginx 指令

Sharing a nginx directive across sites

我的服务器中有大约 30 个站点。我正在尝试向每个站点添加 IP 拦截器,而不更改 sites_enabled.

中的相应站点文件

即。我需要把这个块分享给服务器中的所有网站。

location / {
    if ($allowed_country = no) {
         return 418;         
    }
    try_files $uri $uri/ /index.php?$query_string;
}

到目前为止,我所有的研究都表明我无法做到这一点。有人可以确认吗?无论如何我可以跨站点共享它并确保它不会在站点 nginx 配置文件中被覆盖吗?

您是否已尝试在 server-block 中添加 if 指令(在所有这些位置语句之前)并在之后中断?

server {
    if ($allowed_country = no) {
         return 418;
         break; 
    }
}

if 由于 nginx 奇怪的声明规则,location 中的指令被认为是邪恶的。他们大部分时间都在做奇怪的事情,所以尽量避免。