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

Deny access to multiple domains in same directory

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

是的,您可以使用 ngx_http_geo_module 来阻止某些 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;
   }