# Nginx教程 - 14 访问控制

访问控制就是控制哪些 IP 可以访问 Nginx 或者 哪些 IP 不能访问 Nginx。也就是所谓的白名单和黑名单。

进行访问控制,我们可以使用防火墙进行控制,防火墙控制是在 OSI 网络模型的第四层,也就是传输层。而 Nginx 的访问控制是在 OSI 模型的第七层,也就是在应用层进行控制。

下面介绍一下在 Nginx 中如何进行访问控制。


如果要设置哪个 IP 允许或禁止访问某个站点,可以在站点的 server 配置中,使用 denyallow 进行配置。

举个栗子:

server {
    listen       80;
    server_name  localhost; 
  
  	deny 192.168.0.105;  # 禁止该IP访问
    deny 192.168.0.104;  # 禁止该IP访问
    allow 0.0.0.0/0;  # 允许所有的IP访问

    location / {
        root   /home/doubi/html_1;
        index  index.html;
    }
}
1
2
3
4
5
6
7
8
9
10
11
12
13

上面禁止了两个 IP 进行访问,允许其他所有的IP访问。

配置 IP 的时候可以指定 IP 的网段,例如 deny 192.168.0.0/24; 表示禁止从 192.168.0.1192.168.0.254


还可以使用相反的配置,只允许指定的 IP 访问,禁止其他所有的 IP 访问:

server {
    listen       80;
    server_name  localhost; 
  
  	allow 192.168.0.105;  # 允许该IP访问
    allow 192.168.0.104;  # 允许该IP访问
    deny 0.0.0.0/0;  # 禁止所有的IP访问

    location / {
        root   /home/doubi/html_1;
        index  index.html;
    }
}
1
2
3
4
5
6
7
8
9
10
11
12
13

被限制访问后,访问 Nginx 会返回 403 Forbidden