Nginx 拒绝访问同一目录中的多个域

Nginx 拒绝访问同一目录中的多个域,nginx,restriction,Nginx,Restriction,我有很多域名。在nginx中配置为虚拟主机。它们都有相同的文档根。我想限制对大量不同ip的访问。有没有办法在最高级别的虚拟主机配置中实现这一点?例如,在主http{}块中。是,您可以使用阻止某些IP访问您的虚拟主机。此模块帮助您根据客户端IP地址创建具有值的变量。您可以在http级别定义IP。这里有一个例子 http { geo $spamers { # --allow all -- default no; #-- block

我有很多域名。在nginx中配置为虚拟主机。它们都有相同的文档根。我想限制对大量不同ip的访问。有没有办法在最高级别的虚拟主机配置中实现这一点?例如,在主http{}块中。

是,您可以使用阻止某些IP访问您的虚拟主机。此模块帮助您根据客户端IP地址创建具有值的变量。您可以在http级别定义IP。这里有一个例子

http {

    geo $spamers {
          # --allow all --
          default no;
          #-- block these bad ips --
          192.0.171.118 spam; 
          192.0.179.119 spam;
          192.0.179.120 spam; 
          192.128.168.0/20 spam; 
    }
您可以添加任意数量的IP,然后在要限制这些IP的服务器的位置块中添加检查

location ~* /mysite/www/ {
    if ( $spamers = spam ) {
       # -- Return a forbidden message 
       return 403;
   }

谢谢你的回复。它需要和我一样的工作。我以简单的拒绝指令将所有坏IP添加到文件中,然后在每个虚拟主机配置的位置块中包含此文件。我很好奇是否可以在不涉及虚拟主机配置的情况下执行此操作。您必须在所有服务器块中添加这些规则(不必在每个位置块中写入)。nginx的默认行为是,当请求到来时,它将请求头字段“Host”与您定义的虚拟服务器匹配。因此,请求将直接进入该服务器块。