需求:我需要一个只允许指定的ip访问django服务,其他ip访问,直接拒绝服务。
经过一番查询,发现可以利用Nginx进行ip访问控制,屏蔽其他ip访问,只允许在白名单的ip才可以访问。
修改站点的Nginx配置文件,比如我的文件是:admin.conf
在server或者location配置段中进行配置,通过allow和deny参数来控制访问。
allow:允许访问ip
deny:拒绝访问ip
配置信息如下:
Nginx路径:/etc/Nginx/conf.d/chenxm.conf
server { listen 80; server_name admin.chenxm.cc; location / { proxy_pass http://0.0.0.0:10000; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; allow 222.222.222.222; deny all; } }
allow 222.222.222.222; 表示允许222.222.222.222这个ip访问
deny all 表示拒绝所有ip的访问。
[root@localhost ~]# Nginx -tc /etc/Nginx/Nginx.conf Nginx: the configuration file /etc/Nginx/Nginx.conf Syntax is ok Nginx: configuration file /etc/Nginx/Nginx.conf test is successful
相关用法:
如果反过来使用:
allow all; 表示允许所有ip访问
deny 222.222.222.222 表示拒绝222.222.222.222这个ip访问
最后:
当用户ip不是222.2222.222.222来访问,Nginx直接返回一个403页面给用户
高级知识:
当Nginx作为web服务的时候也会有安全功能的模块,可以通过修改配置文件的方式来设置允许和拒绝的IP来访问。有些IP被设置拒绝访问后,访问的时候会出现403,也就是拒绝访问。不过由于IP的数量庞大,很多时候都不会指定详细的IP地址,应该会使用网段的方式。比如192.168.0.*,这样的方式进行配置 。