访问控制
限制ip访问(白名单、黑名单)
- 当我们的某一个站点为公司内部使用时,可以在虚拟主机配置文件中使用限制ip访问的配置使外网不能访问站点。
vi /etc/nginx/conf.d/bbs.aaa.com.conf
- 在配置文件中添加如下内容,reload配置文件后验证。
allow 127.0.0.1; //现实生产中,该白名单地址应设置为公司外网地址/或地址段。 deny all;
- 可以看到,使用指定白名单的ip可以正常访问,而不在白名单中的ip是拒绝访问的。
[root@localhost ~]# curl -x127.0.0.1:80 bbs.aaa.com -IHTTP/1.1 200 OKServer: nginx/1.14.2Date: Tue, 19 Feb 2019 17:05:28 GMTContent-Type: text/html; charset=utf-8Connection: keep-aliveX-Powered-By: PHP/7.3.2[root@localhost ~]# curl -x192.168.254.128:80 bbs.aaa.com -IHTTP/1.1 403 ForbiddenServer: nginx/1.14.2Date: Tue, 19 Feb 2019 17:05:38 GMTContent-Type: text/htmlContent-Length: 169Connection: keep-alive
- 直接拒绝某个ip访问(黑名单),直接在配置文件中写入deny ip就可以了
deny 127.0.0.1;
- 验证
[root@localhost ~]# curl -x127.0.0.1:80 bbs.aaa.com -IHTTP/1.1 403 ForbiddenServer: nginx/1.14.2Date: Tue, 19 Feb 2019 17:14:08 GMTContent-Type: text/htmlContent-Length: 169Connection: keep-alive
限制站点上的某个目录(后台目录)的访问
- 比如我们的网站下的一个目录/admin是后台目录,不允许通过外网访问,我们可以通过编辑虚拟主机配置文件实现
location /admin/{ allow 127.0.0.1; deny all;}
- 验证可以发现,使用其他ip访问反馈的状态码是403(拒绝的),而使用127.0.0.1访问反馈的状态码市404(并没有拒绝,只是该站点下没有/admin/目录。)
[root@localhost ~]# curl -x192.168.254.128:80 bbs.aaa.com/admin/ -IHTTP/1.1 403 ForbiddenServer: nginx/1.14.2Date: Tue, 19 Feb 2019 17:24:27 GMTContent-Type: text/htmlContent-Length: 169Connection: keep-alive[root@localhost ~]# curl -x127.0.0.1:80 bbs.aaa.com/admin/ -IHTTP/1.1 404 Not FoundServer: nginx/1.14.2Date: Tue, 19 Feb 2019 17:24:53 GMTContent-Type: text/htmlContent-Length: 169Connection: keep-alive
限制某个目录下的某类文件,下面实例中是限制upload和image目录下所有的以.php结尾的文件。
location ~ .*(upload|image)/.*\.php${ deny all;}
限制user-agent,下面实例是限制user-agent中包含Spider/3.0|YoudaoBot|Tomato的访问。
if ($http_user_agent ~ 'Spider/3.0|YoudaoBot|Tomato'){ return 403;}
限制uri
什么是URI?参考
- 在上面这个网址当中,baike.baidu.com是域名;/item/URI/2901761是uri ;?后面是参数。
- 限制request_uri 就是限制uri和参数中包含指定字符的访问。
if ($request_uri ~ (abc|123)){ return 404;}
curl 的用法
curl有很多使用方法,可参考: