举杯邀月

Nginx 禁止某个IP、IP段访问或者只允许某个IP、IP段访问的方法

摘要:Nginx 作为一款高性能的web服务,他也自带了一些关于“安全性”的设置,我们可以通过设置来 禁止某个IP、IP段访问或者只允许某个IP、IP段访问。

Nginx 作为一款高性能的web服务,他也自带了一些关于“安全性”的设置,我们可以通过设置来 禁止某个IP、IP段访问或者只允许某个IP、IP段访问。

比如我们有一个后台,只希望自己的ip可以访问其他ip一律禁止访问,这样就可以在很大程度上保护后台不被入侵。

指令

allow

语法: allow address | CIDR | unix: | all;
默认值: —
配置段: http, server, location, limit_except

允许某个ip或者一个ip段访问.如果指定unix:,那将允许socket的访问.注意:unix在1.5.1中新加入的功能,如果你的版本比这个低,请不要使用这个方法。

deny

语法: deny address | CIDR | unix: | all;
默认值: —
配置段: http, server, location, limit_except

禁止某个ip或者一个ip段访问.如果指定unix:,那将禁止socket的访问.注意:unix在1.5.1中新加入的功能,如果你的版本比这个低,请不要使用这个方法。

注: 实际上 deny 和 allow 指令属于 ngx_http_access_module 模块。
案例

某个目录只允许某一个ip进行访问。

location ^~ /xxx/
{
    # …………

    #  设置允许访问的ip
    allow 172.0.0.1;
    allow 192.168.0.1;

    # 其他ip一律禁止
    deny all;
}
1
2
3
4
5
6
7
8
9
10
11
1
2
3
4
5
6
7
8
9
10
11
1
2
3
4
5
6
7
8
9
10
11
1
2
3
4
5
6
7
8
9
10
11
1
2
3
4
5
6
7
8
9
10
11

另外,如果我们有一个IP范围允许访问,如果每个ip都是一行的话可能会写很多行,这样既麻烦又不容易维护。这种情况我们可以使用ip段来设置。

location ^~ /xxx/
{
    # …………

    allow 127.0.0.0/16;

    deny all;
}
1
2
3
4
5
6
7
8
1
2
3
4
5
6
7
8
1
2
3
4
5
6
7
8
1
2
3
4
5
6
7
8
1
2
3
4
5
6
7
8

简单说明一下

ip段:x.x.x.1-x.x.x.255          的表示方法:10.0.0.0/24
ip段:x.x.0.1-x.x.255.255        的表示方法:10.0.0.0/16
ip段:x.0.0.1-x.255.255.255      的表示方法:10.0.0.0/8
1
2
3
1
2
3
1
2
3
1
2
3
1
2
3

作者:举杯邀月

出处: http://www.hug-code.cn/archives/5fca07aba9dfa.html

2020-10-03 标签: nginx