Nginx屏蔽个别User-Agent蜘蛛访问网站的方法

对于做国内站的我来说,我不希望国外蜘蛛来访问我的网站,特别是个别垃圾蜘蛛,它们访问特别频繁。这些垃圾流量多了之后,严重浪费服务器的带宽和资源。通过判断user agent,在nginx中禁用这些蜘蛛可以节省一些流量,也可以防止一些恶意的访问。

步骤

1、进入nginx的配置目录,例如cd /usr/local/nginx/conf

2、添加agent_deny.conf配置文件

#禁止Scrapy等工具的抓取
if ($http_user_agent ~* (Scrapy|Curl|HttpClient)) {
  return 403;
}
#禁止指定UA及UA为空的访问
if ($http_user_agent ~ "FeedDemon|JikeSpider|Indy Library|Alexa Toolbar|AskTbFXTV|AhrefsBot|CrawlDaddy|CoolpadWebkit|Java|Feedly|UniversalFeedParser|ApacheBench|Microsoft URL Control|Swiftbot|ZmEu|oBot|jaunty|Python-urllib|lightDeckReports Bot|YYSpider|DigExt|YisouSpider|HttpClient|MJ12bot|heritrix|EasouSpider|LinkpadBot|Ezooms|^$" )
{
  return 403;
}
#禁止非GET|HEAD|POST方式的抓取
if ($request_method !~ ^(GET|HEAD|POST)$) {
  return 403;
}

3、在网站相关配置文件中插入代码“include agent_deny.conf ;”。

location ~ [^/]\.php(/|$)
{
  try_files $uri =404;
  fastcgi_pass  unix:/tmp/php-cgi.sock;
  fastcgi_index index.php;
  include fastcgi.conf;
  include agent_deny.conf ;
}

4、重新加载nginx

/etc/init.d/nginx reload

测试

通过curl模拟蜘蛛抓取访问。

[email protected]:~# curl -I -A "BaiduSpider" www.sijitao.net
HTTP/1.1 200 OK
Server: nginx
Date: Mon, 09 Feb 2015 03:37:20 GMT
Content-Type: text/html; charset=UTF-8
Connection: keep-alive
Vary: Accept-Encoding
X-Powered-By: PHP/5.5.19
Vary: Accept-Encoding, Cookie
Cache-Control: max-age=3, must-revalidate
WP-Super-Cache: Served supercache file from PHP

[email protected]199:~# curl -I -A "JikeSpider" www.sijitao.net
HTTP/1.1 403 Forbidden
Server: nginx
Date: Mon, 09 Feb 2015 03:37:44 GMT
Content-Type: text/html
Content-Length: 162
Connection: keep-alive

[email protected]199:~# curl -I -A "" www.sijitao.net
HTTP/1.1 403 Forbidden
Server: nginx
Date: Mon, 09 Feb 2015 03:37:52 GMT
Content-Type: text/html
Content-Length: 162
Connection: keep-alive

nginx日志上的效果如下。

到这里,nginx通过判断User-Agent屏蔽蜘蛛访问网站就已经完成,可以根据实际情况对agent_deny.conf中的蜘蛛进行增加、删除或者修改。

时间: 2024-10-11 07:28:21

Nginx屏蔽个别User-Agent蜘蛛访问网站的方法的相关文章

Nginx禁止直接通过IP地址访问网站

介绍下在nginx服务器禁止直接通过IP地址访问网站的方法,以避免别人恶意指向自己的IP,有需要的朋友参考下. 有时会遇到很多的恶意IP攻击,在Nginx下可以禁止IP访问. Nginx的默认虚拟主机在用户通过IP访问,或通过未设置的域名访问,在server的设置里面添加这一行: 复制代码代码示例: listen 80 default; 后面的default参数表示这个是默认虚拟主机. Nginx 禁止IP访问这个设置非常有用. 比如别人通过ip或者未知域名访问你的网站时,希望禁止显示任何有效内

Nginx禁止直接通过IP地址访问网站(关闭默认站点或空主机头)

这篇文章主要介绍了Nginx中禁止使用IP访问网站的配置实例,一般在备案时可能需要这种设置,需要的朋友可以参考下 国内因为备案的原因,所有服务器都要禁止使用IP访问网站.否则,如果允许使用IP访问网站,那随便解析一个域名到该IP,访问该域名就可以打开网站了.这是一个极大的风险!Nginx中可以很方便的来解决这个问题,小菜鸟来跟大家一起探讨一下. 如下的配置项,可以设置允许使用IP访问网站. server { listen 80; server_name ""; } 这里相当于是绑定了一

用IP或IP+端口来访问网站的方法

1.打开IIS管理器--主机头值设置为空就可以了,重启IIS.

利用nginx来屏蔽指定的user_agent的访问以及根据user_agent做跳转

对于做国内站的我来说,我不希望国外蜘蛛来访问我的网站,特别是个别垃圾蜘蛛,它们访问特别频繁.这些垃圾流量多了之后,严重浪费服务器的带宽和资源.通过判断user agent,在nginx中禁用这些蜘蛛可以节省一些流量,也可以防止一些恶意的访问. 方法一:修改nginx.conf,禁止网络爬虫的user_agent,返回403. 1.进入nginx的配置目录,例如cd /usr/local/nginx/conf 2.添加agent_deny.conf配置文件 vim agent_deny.conf

Nginx 使用 sever 段规则屏蔽恶意 User Agent

相对于 Apache,Nginx 占用的系统资源更少,更适合 VPS 使用.恶意的 User Agent 无处不在,博客更换到 WordPress 没几天,就被 SPAM(垃圾留言)盯上,又被暴力破解后台用户名密码.以前介绍过 Apache 使用 .htaccess 屏蔽恶意 User Agent,今天来介绍 Nginx 屏蔽恶意 User Agent的方法. 先上规则&注释 #禁用未初始化变量警告 uninitialized_variable_warn off; #匹配各种 bad user

nginx日志之错误日志及访问日志及日志分割

一.nginx错误日志 nginx软件会把自身运行的故障信息及用户访问的日志信息记录到指定的日志文件里 一般在nginx.conf配置文件第二行添加:error_log    logs/error.log    error : ↓                  ↓                  ↓ 关键字             日志文件       日志级别 其实如果不添加这行的话,默认就是这样 关于日志级别: 错误日志常见的级别有 :debug | info|notice | war

nginx实现访问网站或目录密码认证保护

添加目录登陆认证 location / { auth_basic "提示"; auth_basic_user_file /usr/conf/htpasswd; } auth_basic 指令包含一个具有测试用户名和密码的HTTP基本认证,指定的参数将用于认证域.如果将值设置为“off”则忽略下级指令继承的动作. auth_basic_user_file 指令为验证域指定了密码文件,0.6.7版本以后这里指定的文件是nginx.conf所在目录的绝对路径,而不是–prefix指定的路径.

Nginx如何设置禁止IP访问网站

需要禁止IP访问网站.在相关的server中设置相关的限制即可.

浅谈屏蔽搜索引擎爬虫(蜘蛛)抓取/索引/收录网页的几种思路

网站建设好了,当然是希望网页被搜索引擎收录的越多越好,但有时候我们也会碰到网站不需要被搜索引擎收录的情况. 比如,你要启用一个新的域名做镜像网站,主要用于PPC 的推广,这个时候就要想办法屏蔽搜索引擎蜘蛛抓取和索引我们镜像网站的所有网页.因为如果镜像网站也被搜索引擎收录的话,很有可能会影响官网在搜索引擎的权重,这肯定是我们不想看到的结果. 以下列举了屏蔽主流搜索引擎爬虫(蜘蛛)抓取/索引/收录网页的几种思路.注意:是整站屏蔽,而且是尽可能的屏蔽掉所有主流搜索引擎的爬虫(蜘蛛). 1.通过 rob