Nginx服务器实现通过ip和user_gent限制访问的方法分析
本文实例讲述了Nginx服务器实现通过ip和user_gent限制访问的方法。分享给大家供大家参考,具体如下:
DDOS攻击是大规模访问站点经常会遇到的问题,它是指有人通过程序恶意刷站点的某些页面,导致站点响应缓慢或者直接拒绝服务。
这种情况可以通过分析nginx的access日志发现,存在大量相同ip或者user_agent的请求,我们可以根据请求的相似性,对于这些访问的请求,直接在nginx层面上过滤掉。
通过ip限制访问
Nginx中访问控制模块相关文档
http://nginx.org/en/docs/http/ngx_http_access_module.html
访问控制可以通过deny指令来拒绝访问,allow指令允许访问。
当有多个deny和allow规则时,匹配到对应的规则就跳出。
拒绝固定ip
deny 192.168.1.12;
拒绝ip网段
deny 192.168.1.0/24;
只允许内网访问
allow 192.168.1.0/24; deny all;
通过user_agent限制访问
Nginx没有专门针对user_agent的限制指令,user_agent在nginx中可以通过$http_user_agent变量访问到,使用if指令对user_agent进行正则匹配,对于匹配到的规则,拒绝访问即可。
nginx中对if指令介绍的比较详细的在rewrite模块中
http://nginx.org/en/docs/http/ngx_http_rewrite_module.html
通过user_agent限制Jmeter测试工具的访问
if ($http_user_agent ~ "^Apache.*Java"){ return 403; }
希望本文所述对大家nginx服务器维护有所帮助。
相关推荐
-
Nginx访问限制配置详解
什么是Nginx访问限制配置 nginx访问限制可以基于两个方面,一个是基于ip的访问控制,另一个是基于用户的信任登陆控制 下面我们将对这两种方法逐个介绍 基于IP的访问控制介绍: 可以通过配置基于ip的访问控制,达到让某些ip能够访问,限制哪些ip不能访问的效果 这是允许 访问的配置方法 配置语法:allow address | CIDR | unix | all; 默认配置:没有配置 配置路径:http.server.location.limit_except下: 这是不允许访问的配置 方法
-
在nginx中实现单位时间内限制访问频率的教程
首先说一下遇到这个问题是因为网站被攻击,阿里云报警,想到要限制一下访问频率,而不是限制ip(限制ip的方案稍后给出).nginx连接资源被吃空返回状态码是502,添加本方案限制后返回599,与正常状态码区别开. 步骤如下: 首先nginx.conf里面添加如下内容: map $http_x_forwarded_for $clientRealIp { "" $remote_addr; ~^(?P<firstAddr>[0-9\.]+),?.*$ $firstAddr; } #
-
浅谈Nginx请求限制和访问控制的实现
一.Nginx的请求限制 1. HTTP协议的连接与请求 HTTP协议版本与连接关系 HTTP协议版本 连接关系 HTTP1.0 TCP不能复用 HTTP1.1 顺序性TCP复用 HTTP2.0 多路复用TCP复用 HTTP请求建立在一次TCP连接的基础上. 一次TCP连接至少可以产生一次HTTP请求,HTTP1.1版本以后,建立一次TCP连接可以发送多次HTTP请求. 1. 连接频率限制 ngx_http_limit_conn_module 语法 Syntax: limit_conn_zone
-
Nginx限制某个IP同一时间段的访问次数和请求数示例代码
nginx可以通过ngx_http_limit_conn_module和ngx_http_limit_req_module配置来限制ip在同一时间段的访问次数. ngx_http_limit_conn_module:该模块用于限制每个定义的密钥的连接数,特别是单个IP地址的连接数.使用limit_conn_zone和limit_conn指令. ngx_http_limit_req_module:用于限制每一个定义的密钥的请求的处理速率,特别是从一个单一的IP地址的请求的处理速率.使用"泄漏桶
-
Nginx服务器限制IP访问的各种情况全解析
限制某个IP同一时间段的访问次数 如何设置能限制某个IP某一时间段的访问次数是一个让人头疼的问题,特别面对恶意的ddos攻击的时候.其中CC攻击(Challenge Collapsar)是DDOS(分布式拒绝服务)的一种,也是一种常见的网站攻击方法,攻击者通过代理服务器或者肉鸡向向受害主机不停地发大量数据包, 造成对方服务器资源耗尽,一直到宕机崩溃. cc攻击一般就是使用有限的ip数对服务器频繁发送数据来达到攻击的目的,nginx可以通过HttpLimitReqModul和HttpLimitZo
-
Python的Flask框架及Nginx实现静态文件访问限制功能
Nginx配置 Ngnix,一个高性能的web服务器,毫无疑问它是当下的宠儿.卓越的性能,灵活可扩展,在服务器领域里攻城拔寨,征战天下. 静态文件对于大多数website是不可或缺的一部分.使用Nginx来处理静态文件也是常见的方式.然而,一些静态文件,我们并不像任何情况下都公开给任何用户.例如一些提供给用户下载的文件,一些用户上传的涉及用户隐私的图片等.我们我希望用户登录的情况下可以访问,未登录的用户则不可见. 粗略的处理,在后端程序可以做过滤,渲染页面的时候,在视图逻辑里面验证用户登录,然后
-
通过nginx代理拦截请求进行全局访问限制
本文介绍了通过nginx代理拦截请求进行全局访问限制,分享给大家,具体如下: 运行环境: Ubantu 14.0 tomcat7 nginx 1.4.6(更新后1.5.6) 项目中经常会用到权限管理,必然的就会存在权限的设定和验证:对于登陆或者模块的权限设定验证,在项目中直接实现:那么问题出现了 1.访问资源文件 2.多项目访问权限 3.tomcat中虚拟目录的访问权限 公司项目中用到文件的上传下载,在线预览等功能:当然用户在使用的时候,我们不可能把用户的上传的文件放在项目中,那么必然会用到 虚
-
Nginx limit 限制访问模块的方法
Nginx 的 limit 模块用于限制 Nginx 的访问. limit 模块包含有两个部分: limit_conn 用于对连接数量的限制 limit_req 用于对请求频率的限制 limit_conn limit_conn 模块的实现比 limit_req 简单,直接对拥有相同变量值的连接进行计数,超过限制的连接返回 503 错误(Service Temporarily Unavailable). 实际上,由于某一时刻,一个连接上一般只有一个待处理请求,且由于 keepalive 和 pha
-
Nginx服务器限制访问速度的配置方法
用Nginx建站的同学,常会有限速需求.开发测试阶段在本地限速模拟公网的环境,方便调试.投入运营会有限制附件下限速度,限制每个用户的访问速度,限制每个IP的链接速度等需求. 刚遇到一个Bug在网络很卡的情况下才能重现,本地调试访问本机速度太快,配置Nginx成功达到限速目的,在此分享出来. 配置简单,只需3行,打开"nginx根目录/conf/nginx.conf"配置文件修改如下: http{ -- limit_zone one $binary_remote_addr 10m; --
-
nginx与apache限制ip并发访问 限制ip连接的设置方法
nginx nginx限制ip并发数,也是说限制同一个ip同时连接服务器的数量 1.添加limit_zone 这个变量只能在http使用 vi /usr/local/nginx/conf/nginx.conf limit_zone one $binary_remote_addr 10m; 2.添加limit_conn 这个变量可以在http, server, location使用 我只限制一个站点,所以添加到server里面 vi /usr/local/nginx/conf/host/gaoji
-
Nginx限制IP并发数与下载速度的方法
在Nginx服务器上进行一些常规设置,来限制其并发数及会话空间等. nginx限制ip并发数,也是说限制同一个ip同时连接服务器的数量 1,添加limit_zone 这个变量只能在http使用 代码示例: 复制代码 代码如下: vi /usr/local/nginx/conf/nginx.conflimit_zone one $remote_addr 10m; 2,添加limit_conn 这个变量可以在http, server, location使用只限制一个站点,所以添加到server里面
随机推荐
- JavaScript结合PHP实现网页制作中双下拉菜单的动态实现
- Android编程使WebView支持HTML5 Video全屏播放的解决方法
- vbscript脚本编程教程2利用fso来进行文件操作
- Apache中.htaccess文件功能
- Android 仿支付宝中的余额宝收益进度条
- 详解iOS webview加载时序和缓存问题总结
- 打造通用的匀速运动框架(实例讲解)
- PHP统计nginx访问日志中的搜索引擎抓取404链接页面路径
- Android提高之SurfaceView与多线程的混搭实例
- Bootstrap源码解读排版(1)
- (function($){...})(jQuery)的意思
- jQuery里filter()函数与find()函数用法分析
- java中删除数组中重复元素方法探讨
- asp 中常用的文件处理函数
- php常用图片处理类
- Spring boot redis cache的key的使用方法
- vue滚动固定顶部及修改样式的实例代码
- 学习不同 Java.net 语言中类似的函数结构
- 详解Vue中组件传值的多重实现方式
- python深度优先搜索和广度优先搜索