如何根据访问者的“主机”将访问者引导至特定的 http 服务?

如何根据访问者的“主机”将访问者引导至特定的 http 服务?

我想通过 nginx 配置将用户引导至不同的 Web 服务。

该场景是针对主机名从到192.168.1.1的内部用户192.168.1.255,我想为他们提供一些 Web 服务,但对于其他外部访问者,我不希望实现这一点。

我知道我可以使用它IP_TABLES来启用此功能,但我使用 IP_TABLE 规则主要用于防火墙目的,我不想将它与此配置混合。

有没有我可以使用的配置nginx.conf

答案1

您可以将 GEO 模块与地图指令一起使用:

http {
  geo $special_service {
    default 0;
    192.168.1.0/24 1;
  }
  server {
    if ($special_service) {
      return 302 $scheme://$server_name/special-service/;
    }
  }
}

答案2

创建一个单独的location块来覆盖您的敏感内容。

请记住,配置指令不会继承;您需要在新块中包含内容所需的现有位置中的所有内容。

location /path/to/sensitive/stuff {
    # any other config that you need goes here..
    # ...
    allow 192.168.1.0/24;
    deny all;
}

相关内容