Nginx 实现 IP 黑白名单

本文介绍怎样通过 Nginx 的 allow 和 deny 命令实现黑白名单。

什么是黑白名单?

黑白名单是一种用于管理和控制系统访问权限的机制。黑名单是指被禁止访问或使用的对象或资源列表,而白名单则是指被允许访问或使用的对象或资源列表。

在网络安全领域,黑白名单通常用于限制对特定网站、IP地址或应用程序的访问,以保护系统免受恶意攻击或未经授权的访问。

注意:黑白名单也可以用于过滤垃圾邮件、拦截恶意软件等。

Nginx 黑白名单

在 Nginx 中,当我们需要指定或者禁止某些 ip 访问服务时,此时可以使用黑白名单机制,Nginx 通过 allow、deny 配置项来实现黑白名单。

限制单个 IP

如果仅仅限制单个 IP,我们可以直接在 location 里面编写,例如:

# 配置工作进程数量
worker_processes  1;

events {
    # 设置工作进程可以同时打开的最大连接数
    worker_connections  1024;
}

http {
    # 引用 MIME 类型
    include       mime.types;
    default_type  application/octet-stream;
    server {
        listen  8080;
        server_name  localhost;
        location / {
            # 设置请求的根目录
            root   html;
            # 定义将用作索引的文件
            index  index.html index.htm;

            # 【关键位置】
            # 屏蔽 192.177.12.222 访问
            deny 127.0.0.1;
            # 屏蔽 127.0.0.1 到 127.255.255.254 网段中的所有 IP 访问
            deny 127.0.0.0/8;
            # 允许 192.177.44.201 访问
            allow 192.177.44.201;
            # 允许 127.45.0.1 到 127.45.255.254 网段中的所有 IP 访问
            allow 127.45.0.0/16;
            # 除开上述 IP 外,其他 IP 全部禁止访
            deny all;
        }
    }
}

批量限制 IP

如果我们需要批量限制 IP,则需要创建 .conf 文件来配置,例如:

(1)在 Nginx 的 conf 目录下面创建白名单文件 white.conf,如下:

allow 127.0.0.1; # 允许 127.0.0.1 访问
allow 192.177.12.222; # 允许 192.177.12.222 访问
allow 192.177.44.201; # 允许 192.177.44.201 访问
allow 127.45.0.0/16; # 允许 127.45.0.1 到 127.45.255.254 网段中的所有 IP 访问
deny all; # 除开上述 IP 外,其他 IP 全部禁止访问

注意:你也可以将配置文件放在任何你想要的地方,然后采用绝对地址引用,如:include /webapp/white.conf

(2)在 Nginx 的 conf 目录下面创建黑名单文件 black.conf,如下:

deny 192.177.12.222; # 屏蔽 192.177.12.222 访问
deny 192.177.44.201; # 屏蔽 192.177.44.201 访问
deny 127.0.0.0/8; # 屏蔽 127.0.0.1 到 127.255.255.254 网段中的所有 IP 访问

(3)最后,在 nginx 配置文件中引入,如下:

# 【目的】
# 实现黑白名单,批量限制IP
worker_processes  1;

events {
    worker_connections  1024;
}

http {
    include       mime.types;
    default_type  application/octet-stream;

    # 屏蔽该文件中的所有IP
	include black.conf;

    server {
        listen  8080;
        server_name  localhost;
        location / {
            root   html;
            index  index.html index.htm;
            # 【关键位置】
            # 开放给白名单中的IP
		    include white.conf;
        }
    }

}

注意:同时也可以通过 ngx_http_geo_module、ngx_http_geo_module 第三方库去实现(这种方式可以按地区、国家进行屏蔽,并且提供了 IP 库)。

业精于勤,荒于嬉。——韩愈《进学解》
0 不喜欢
说说我的看法 -
全部评论(
没有评论
关于
本网站属于个人的非赢利性网站,转载的文章遵循原作者的版权声明,如果原文没有版权声明,请来信告知:hxstrive@outlook.com
公众号