下面是关于如何在 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 白名单时一定要格外小心,确保不会阻止授权访问。