nginx配置IP白名单的详细步骤

  • Post category:http

下面是关于如何在 Nginx 中配置 IP 白名单的详细步骤。

步骤一:编辑Nginx配置文件

首先,我们需要进入 Nginx 的配置文件目录,通常位于 /etc/nginx/ 目录下。然后找到并编辑 Nginx 的主配置文件 nginx.conf,添加如下代码片段:

http {
    ...
    # 列出可信任的 IP 列表,用空格分隔
    # 这个 IP 白名单将会拦截所有未在下面定义的 IP 地址
    # 如果某个 IP 地址已经在下面定义,则允许该 IP 地址访问
    geo $trusted_ips {
        default no;
        192.168.1.100/32 yes;
        192.168.1.101/32 yes;
        192.168.1.102/32 yes;
    }

    # 其他的 Nginx 配置项可以继续在这里添加
    ...
}

这段代码中,我们定义了一个名为 trusted_ips 的变量,它是由一堆 IP 地址组成的列表,用空格分隔。默认情况下,它被设置为 no,表示所有的 IP 地址都是不可信任的。只有在下面定义的 IP 地址才会被赋予 yes,表示它们是可信的。

步骤二:定义Nginx的location

接下来,我们需要定义一个名为 location 的区域,用于匹配用户访问的 URL。可以根据实际情况调整 location 中的内容。如下所示:

server {
    listen 80;
    server_name example.com;
    root /var/www/example.com;

    location /admin/ {
        # 定义 IP 白名单验证规则
        if ($trusted_ips != yes) {
            return 403;
        }

        # 如果 IP 地址被认证,继续处理下去
        # 这里可以添加其他 Nginx 配置项,如反向代理或访问控制
        ...
    }
}

在这个 location 中,我们主要是定义了一个名为 admin 的 URL,只有经过 IP 地址验证的请求才能够被接受。如果 IP 地址验证不通过,则直接返回 403 访问拒绝。

示例说明

假定我们的服务器拥有三个可信任 IP 地址:192.168.1.100、192.168.1.101 和 192.168.1.102,现在来模拟两种场景:

场景一

一个具有可信任 IP 的用户(如192.168.1.100)发送请求到 /admin/ 接口 ,
Nginx 应该允许该请求通过。

场景二

一个不被信任的 IP 地址(如192.168.1.103)发送请求到 /admin/ 接口,
Nginx 应该返回 403 的访问拒绝提示。

请注意,如果您的服务器运行在公共互联网上,并且有其他人可以访问您的服务器,那么在此设置 IP 白名单时一定要格外小心,确保不会阻止授权访问。