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 ;
}
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 OK
Content-Type: text/html; charset=utf-
Connection: keep-alive
Date: Thu, Nov :: GMT
Content-Length:
Vary: Accept-Encoding
Age:
Pragma: public
Server: nginx
Accept-Ranges: bytes
禁止特定UA后,访问结果:
# curl -I -A "Resty/HTTP 0.03 (Lua)" www.A.com
HTTP/1.1 Forbidden
Server: nginx
Date: Thu, Nov :: GMT
Content-Type: text/html
Content-Length:
Connection: keep-alive
对比两次结果,发现:nginx已经能禁止特定的UA访问了。
补充:
观察一阵子后,发现还有禁止UA为空的访问和放行内网ip不做禁止的需求。
nginx的配置中不支持if条件的逻辑与、逻辑或运算 ,并且不支持if的嵌套语法,但我们可以使用变量达到想要的效果。
#白名单:192.168.
#禁止特定UA和UA为空的访问 set $flag ; if ($remote_addr !~ "^(192.168.1)"){
set $flag "${flag}1";
} if ($http_user_agent ~ "Lua|^$"){
set $flag "${flag}2";
} if ($flag = ""){
return ;
}
注意:以下的写法是错误的!!!
if ($remote_addr !~ "^(192.168.1)" && $http_user_agent ~ "Lua|^$") {
return ;
}
nginx禁止特定UA访问的更多相关文章
- Nginx禁止特定用户代理(User Agents)访问(转)
Nginx可以通过各种方式来限制访问,例如NGINX基本Http认证.allow/deny等等,这些都是前文提过的,今天来看看nginx如果通过用户代理来禁止访问. user agent是什么? 用户 ...
- 设置nginx禁止IP直接访问,只能通过指定的域名访问
nginx的版本是1.2.1. 设置配置文件disableip.conf: server { listen 80; server_name _; return500; } 这是 ...
- nginx禁止未绑定域名访问 并且强行断开连接
总有些人,会把自己的域名绑到你的主机上. 出于什么原因,我没想到,但你肯定不愿意别人这么做. 在nginx中,用以下代码,配置一个默认主机. server { listen 80 default_se ...
- linux禁止特定ip访问某个端口
linux禁止特定ip访问某个端口 解决方法: 禁止特定ip访问8501端口的命令0:iptables -I INPUT -s 192.168.0.232 -ptcp --dport 8501 - ...
- Nginx禁止IP直接访问网站
禁止别人直接通过IP访问网站,在nginx的server配置文件前面加上如下的配置,如果有通过IP直接访问的,直接拒绝连接(需要去掉别的server下的default_server). server ...
- Nginx禁止使用ip访问,只允许使用域名访问
Nginx虚拟主机配置,vhosts下面有很多域名的配置: [root@external-lb01 vhosts]# pwd/data/nginx/conf/vhosts [root@external ...
- Nginx禁止使用IP访问
在nginx的访问日志中,会出现只显示IP,而不出现域名的情况,在经过尝试之后,是因为没有设置禁止IP访问导致的. 下面就是在配置文件中设置禁止IP访问,来实现日志文件中$host显示域名. vim ...
- 禁止特定IP访问Oracle数据库
通过使用数据库服务器端的sqlnet.ora文件可以实现禁止指定IP主机访问数据库的功能,这对于提升数据库的安全性有很大的帮助,与此同时,这个技术为我们管理和约束数据库访问控制提供了有效的手段 在sq ...
- nginx 禁止某IP访问
首先建立下面的配置文件放在nginx的conf目录下面,命名为blocksip.conf: deny 95.105.25.181; 保存一下. 在nginx的配置文件nginx.conf中加入:inc ...
随机推荐
- CDR X7正版优惠,3折来袭,好礼相送,行不行动?
意料之中的是,CorelDRAW系列软件在618期间成绩再次突破历史,成为新高.因为X7版本活动在6月15号的才上, 加之在此之前从没有过X7的活动优惠,势头之猛,可想而知,如此一来,官方预定的限量2 ...
- Eclipse安装不了AXIS2 Tool插件,总是找不到axis2 wizards的问题找到解决答案(转载)
http://blog.csdn.net/downmoon/article/details/7309485 最近在学习axis2工作需要,google一搜,网上到处都是装axis2插件的.根据网上的直 ...
- 洛谷 p2618 数字工程 记忆化搜索_ 线性筛
我们在线筛的同时处理出每个数的所有质因子,记忆化搜索的时候直接枚举质因子即可. 时间复杂度为 O(nlogn)O(nlogn)O(nlogn) Code: #include<cstdio> ...
- html5+css3相关知识
一:HTML5 1.html中的meta标签 定义针对搜索引擎的关键词: <meta name="keywords" content="HTML, CSS, XML ...
- CentOS 7最小安装配置网络
安装环境: VMware Workstation14 centos 7.5.1804 最小化安装 安装过程: 在系统安装成功后进行网络配置,我这里采用的是动态ip配置.首先得知道网络配置存放的目录: ...
- echarts图表属性说明
参考博客: https://blog.csdn.net/luanpeng825485697/article/details/76691965
- Vue经典开源项目
Vue常用的开源项目和插件库 UI组件 element ★34,784 - 饿了么出品的基于Vue2的web UI工具套件storybook ★33,503 - 响应式UI 开发及测试环境Vux ★1 ...
- vuejs 基础总结(one)
vuejs 入门知识点 1.active-class 是哪个组件的属性?嵌套路由怎么定义 (1).active-class 是 vue-router 模块的 router-link 组件的属性 (2) ...
- SpringBoot2.0中使用自定义properties文件
一.在resources目录下添加自定义的test.properties文件 test.properties内容如下: host=127.0.0.1 port=8080 二.编写一个读取配置文件内容的 ...
- FastDFS 实现图片上传_01
一.jar 包 jar包下载:https://pan.baidu.com/s/1nwkAHU5 密码:tlv6 或者 下载工程,安装到 maven 本地仓库 工程下载:https://pan.baid ...