LNMP--Nginx禁止指定user_agent

简介:

编辑虚拟主机配置文件

[root@LampLinux ~]# vim /usr/local/nginx/conf/vhosts/test.conf

在上一节全局访问控制配置deny 192.168.137.0/24;下面添加:

#deny 127.0.0.1;

#deny 192.168.137.0/24;

 if ($http_user_agent ~* 'curl|baidu|yyyyy')    # ~* 表示“不区分大小”写匹配

        {

          return 403;

        }

我们去测试怎么模拟user_agent,为了防止影响,要先把“访问控制”的内容注释“#”掉:

重加载:

[root@LampLinux ~]# /usr/local/nginx/sbin/nginx -t

[root@LampLinux ~]# /usr/local/nginx/sbin/nginx -s reload

测试:

[root@LampLinux ~]# curl -x192.168.137.11:80 www.test.com/forum.php -I

HTTP/1.1 403 Forbidden

Server: nginx/1.6.2

Date: Wed, 12 Aug 2015 11:40:39 GMT

Content-Type: text/html

Content-Length: 168

Connection: keep-alive

现在去模拟一个user_agent:

[root@LampLinux ~]# curl -A "asdfasdfasfdsf.sdfafsdfaf" -x192.168.137.11:80 www.test.com/forum.php -I

HTTP/1.1 200 OK

Server: nginx/1.6.2

Date: Wed, 12 Aug 2015 11:43:27 GMT

... ...

用在什么情况下?

      你的网站访问量很大,服务器资源紧缺,我们成本要控制的严谨一点,服务器会有一些吃力,网站都会给搜索引擎一个“蜘蛛”去爬取,爬取得时候,跟我们现实去搜索一样的,同样也会访问我们的数据库,耗费我们的PHP资源,所以我们要把一些不太重要的搜索引擎“蜘蛛爬虫”给禁止掉,比如我们把360spider、有道或搜狗的spider全部禁止掉,当然我们可以封IP,但是他的IP不固定,很麻烦,所以我们就想到使用user_agent,非常简单,只要是这里 ($http_user_agent ~* 'curl|baidu|yyyyy') 包含curl、baidu、yyyyy字段的都 return 403;

实验:

[root@LampLinux ~]# curl -A "asdfasbaidufdsf.sdfafsdfaf" -x192.168.137.11:80 www.test.com/forum.php -I

HTTP/1.1 403 Forbidden

Server: nginx/1.6.2

Date: Wed, 12 Aug 2015 11:45:10 GMT

Content-Type: text/html

Content-Length: 168

Connection: keep-alive


[root@LampLinux ~]# curl -A "asdfasyyyyyfdsf.sdfafsdfaf" -x192.168.137.11:80 www.test.com/forum.php -I

HTTP/1.1 403 Forbidden

Server: nginx/1.6.2

Date: Wed, 12 Aug 2015 11:47:19 GMT

Content-Type: text/html

Content-Length: 168

Connection: keep-alive

本文转自 听丶飞鸟说 51CTO博客,原文链接:http://blog.51cto.com/286577399/1683938


相关文章
|
10天前
|
应用服务中间件 Linux PHP
linux 查看nginx状态和php-fpm状态 nginx-status和php-status
linux 查看nginx状态和php-fpm状态 nginx-status和php-status
7 0
|
2月前
|
前端开发 应用服务中间件 nginx
Nginx中root与alias区别
Nginx中root与alias区别
24 0
|
4月前
|
应用服务中间件 nginx
Nginx 配置中root和alias的区别分析
Nginx 配置中root和alias的区别分析
67 0
|
8月前
|
应用服务中间件 Linux 网络安全
nginx--安装
nginx--安装
|
应用服务中间件 Linux nginx
【nginx】user nginx; 是干什么的?底层原理是什么?
【nginx】user nginx; 是干什么的?底层原理是什么?
1274 0
|
应用服务中间件 nginx
Nginx:root与alias的区别
Nginx:root与alias的区别
116 0
|
应用服务中间件 nginx
运行sudo service nginx restart,报错* Restarting nginx nginx[fail],启动不了nginx,启动nginx报错
运行sudo service nginx restart,报错* Restarting nginx nginx[fail],启动不了nginx,启动nginx报错
292 0
|
应用服务中间件 nginx
nginx中root和alias的区别
nginx中root和alias的区别
nginx中root和alias的区别
|
监控 测试技术 应用服务中间件