nginx禁止特定UA访问

一、UA是什么?

User Agent 简称UA,就是用户代理。通常我们用浏览器访问网站,在网站的日志中,我们的浏览器就是一种UA。

二、禁止特定UA访问

最近有个网站(www.C.com)抄袭公司主站(www.A.com)的内容,除了域名不同,内容、图片等都完全是我们主站的内容。

出现这种情况,有两种可能:

一种是它用爬虫抓取公司主站(www.A.com)的内容并放到自己服务器上显示;

另一种是通过将访问代理至公司主站(www.A.com),而域名(www.C.com)是盗用者的,骗取流量。

无论怎样,都要禁止这种行为的继续。

通过分析日志,没有发现爬虫大量爬取公司主站(www.A.com)内容页面的信息。

测试是否是代理,测试步骤:

1)访问www.C.com并指定参数

URL : www.C.com/chaojikaifangfu.html/?cccc

2)检查公司主站的web服务器上的nginx日志

发现有记录,说明刚才的访问被代理到公司主站web上了。

UA(双引号里边的是UA的全名):Resty/HTTP 0.03 (Lua)

有两种方法解决:

1)禁止IP

2)禁止UA

从nginx日志观察,访问者的代理IP经常变,但是访问UA却是固定的,因而可以禁止UA。

禁止特定UA:

1)nginx配置信息

nginx配置目录:/usr/local/nginx/conf/

2)在nginx配置目录中,创建新的配置文件agent_deny.conf,添加如下内容:

# 禁止特定UA访问# ~ "Lua" :表示用户UA匹配"Lua"字符串,区分大小写# 当用户UA被匹配成功,则返回403错误,不给予访问。
if ($http_user_agent ~ "Lua"){
     return 403;
}

3)添加该配置到相应的server或location段

include  agent_deny.conf;

注意:不能加到http段,if 用于http段会报语法错误的。

4)使配置生效

nginx -t
nginx -s reload

5)检查禁止特定UA的功能是否成功

利用curl工具,指定UA去访问公司主站(www.A.com)

没禁止特定UA前,访问结果:

# curl -I -A "Resty/HTTP 0.03 (Lua)" www.A.com
HTTP/1.1 200 OK
Content-Type: text/html; charset=utf-8
Connection: keep-alive
Date: Thu, 03 Nov 2016 15:50:13 GMT
Content-Length: 361168
Vary: Accept-Encoding
Age: 294
Pragma: public
Server: nginx
Accept-Ranges: bytes

禁止特定UA后,访问结果:

# curl -I -A "Resty/HTTP 0.03 (Lua)" www.A.com
HTTP/1.1 403 Forbidden
Server: nginx
Date: Thu, 03 Nov 2016 15:55:17 GMT
Content-Type: text/html
Content-Length: 162
Connection: keep-alive

对比两次结果,发现:nginx已经能禁止特定的UA访问了。

时间: 2025-01-04 10:09:00

nginx禁止特定UA访问的相关文章

设置nginx禁止IP直接访问,只能通过指定的域名访问

设置配置文件disableip.conf: server {     listen 80;     server_name _;     return500; } 这是最终使用的配置文件,也是网上找到的常见的配置之一,最初该conf文件在sites-available文件夹下,尝试使用各种参数均无法正常工作,最终尝试将disableip.conf文件放入conf.d文件夹下,这是因为在nginx.conf文件中: include /etc/nginx/conf.d/*.conf; include

nginx禁止使用IP访问

在nginx的访问日志中,会出现只显示IP,而不出现域名的情况,在经过尝试之后,是因为没有设置禁止IP访问导致的. 下面就是在配置文件中设置禁止IP访问,来实现日志文件中$host显示域名. vim /etc/nginx/nginx.conf server { listen 80 default; return 404; } nginx -t systemctl reload nginx 或者:nginx -s reload 查看日志.能够成功即可. 原文地址:https://www.cnblo

nginx 禁止某个IP访问立网站的设置方法

一:建立ip列表 vim /usr/local/nginx/conf/ip.txt deny 192.168.1.100; deny 192.168.1.101; #或者    allow 192.168.1.102; allow 192.168.1.103; deny all; 实现只允许102和103访问网站,其他全部拒绝. 二:在nginx.conf加入该列表 vim /usr/local/nginx/conf/nginx.conf include /usr/local/nginx/con

nginx禁止ip直接访问

编辑一个noIp.conf放到虚拟目录中 server { listen 80 default; server_name _; rewrite ^ http://www.xxxx.com/; } 其中 www.xxxx.com是你想跳转的网站. 意思是,如果用户通过ip直接访问,就给跳转到对应的网站.

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

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

Nginx 禁止IP访问

我们在使用的时候会遇到很多的恶意IP攻击,这个时候就要用到Nginx 禁止IP访问了.下面我们就先看看Nginx的默认虚拟主机在用户通过IP访问,或者通过未设置的域名访问(比如有人把他自己的域名指向了你的ip)的时 候生效最关键的一点是,在server的设置里面添加这一行: listen 80 default; 后面的default参数表示这个是默认虚拟主机. Nginx 禁止IP访问这个设置非常有用. 比如别人通过ip或者未知域名访问你的网站的时候,你希望禁止显示任何有效内容,可以给他返回50

nginx 禁止ip访问只允许域名访问

nginx 禁止ip访问只允许域名访问 在nginx 配置文件中,再添加一个server段 server{listen 80 default;return 500;}

nginx 禁止恶意uesr agent访问

禁用一些User Agent可以节省一些流量也可以防止一些恶意的访问,尤其是部份搜索引擎爬虫,例如我们的网站就是一个地方性站点,没有必要被一些国外的搜索引擎爬虫索引,都可以禁掉,具体操作如下: 1.编辑该文件:# vi /usr/local/nginx/conf/vhosts/yourpool.conf2.增加以下内容(示例):#禁止Scrapy等工具的抓取,注意已经取消curl抓取if ($http_user_agent ~* (Scrapy|Curl|HttpClient)) {     r

Nginx禁止ip访问或IP网段访问方法

Nginx禁止ip访问可以防止指定IP访问我们的网站,本例子可以实现是防止单IP访问或IP网段访问了,非常的有用我们一起来看看吧. 常用的linux做法 iptables参考规则  代码如下 复制代码 iptables -I INPUT -p tcp –dport 80 -m –mac-soruce$MAC -j DROP 基于mac地址的iptables -I INPUT -p tcp –dport 80 -s $IP -j DROP 基于ip地址的 方法一, 首先建立下面的配置文件放在ngi