本文介绍怎样通过 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 库)。
勇气通往天堂,怯懦通往地狱。——塞内加
关于
本网站专注于 Java、数据库(MySQL、Oracle)、Linux、软件架构及大数据等多领域技术知识分享。涵盖丰富的原创与精选技术文章,助力技术传播与交流。无论是技术新手渴望入门,还是资深开发者寻求进阶,这里都能为您提供深度见解与实用经验,让复杂编码变得轻松易懂,携手共赴技术提升新高度。如有侵权,请来信告知:hxstrive@outlook.com
链接
其他应用
公众号
© 版权声明
文章版权归作者所有,未经允许请勿转载。