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服务器维护有所帮助。

(0)

相关推荐

  • 浅谈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 limit 限制访问模块的方法

    Nginx 的 limit 模块用于限制 Nginx 的访问. limit 模块包含有两个部分: limit_conn 用于对连接数量的限制 limit_req 用于对请求频率的限制 limit_conn limit_conn 模块的实现比 limit_req 简单,直接对拥有相同变量值的连接进行计数,超过限制的连接返回 503 错误(Service Temporarily Unavailable). 实际上,由于某一时刻,一个连接上一般只有一个待处理请求,且由于 keepalive 和 pha

  • Nginx访问限制配置详解

    什么是Nginx访问限制配置 nginx访问限制可以基于两个方面,一个是基于ip的访问控制,另一个是基于用户的信任登陆控制 下面我们将对这两种方法逐个介绍 基于IP的访问控制介绍: 可以通过配置基于ip的访问控制,达到让某些ip能够访问,限制哪些ip不能访问的效果 这是允许 访问的配置方法 配置语法:allow address | CIDR | unix | all; 默认配置:没有配置 配置路径:http.server.location.limit_except下: 这是不允许访问的配置 方法

  • 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并发数与下载速度的方法

    在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里面

  • Python的Flask框架及Nginx实现静态文件访问限制功能

    Nginx配置 Ngnix,一个高性能的web服务器,毫无疑问它是当下的宠儿.卓越的性能,灵活可扩展,在服务器领域里攻城拔寨,征战天下. 静态文件对于大多数website是不可或缺的一部分.使用Nginx来处理静态文件也是常见的方式.然而,一些静态文件,我们并不像任何情况下都公开给任何用户.例如一些提供给用户下载的文件,一些用户上传的涉及用户隐私的图片等.我们我希望用户登录的情况下可以访问,未登录的用户则不可见. 粗略的处理,在后端程序可以做过滤,渲染页面的时候,在视图逻辑里面验证用户登录,然后

  • Nginx服务器限制访问速度的配置方法

    用Nginx建站的同学,常会有限速需求.开发测试阶段在本地限速模拟公网的环境,方便调试.投入运营会有限制附件下限速度,限制每个用户的访问速度,限制每个IP的链接速度等需求. 刚遇到一个Bug在网络很卡的情况下才能重现,本地调试访问本机速度太快,配置Nginx成功达到限速目的,在此分享出来. 配置简单,只需3行,打开"nginx根目录/conf/nginx.conf"配置文件修改如下: http{ -- limit_zone one $binary_remote_addr 10m; --

  • 通过nginx代理拦截请求进行全局访问限制

    本文介绍了通过nginx代理拦截请求进行全局访问限制,分享给大家,具体如下: 运行环境: Ubantu 14.0 tomcat7 nginx 1.4.6(更新后1.5.6) 项目中经常会用到权限管理,必然的就会存在权限的设定和验证:对于登陆或者模块的权限设定验证,在项目中直接实现:那么问题出现了 1.访问资源文件 2.多项目访问权限 3.tomcat中虚拟目录的访问权限 公司项目中用到文件的上传下载,在线预览等功能:当然用户在使用的时候,我们不可能把用户的上传的文件放在项目中,那么必然会用到 虚

  • 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(限制ip的方案稍后给出).nginx连接资源被吃空返回状态码是502,添加本方案限制后返回599,与正常状态码区别开. 步骤如下: 首先nginx.conf里面添加如下内容: map $http_x_forwarded_for $clientRealIp { "" $remote_addr; ~^(?P<firstAddr>[0-9\.]+),?.*$ $firstAddr; } #

  • Nginx服务器限制IP访问的各种情况全解析

    限制某个IP同一时间段的访问次数 如何设置能限制某个IP某一时间段的访问次数是一个让人头疼的问题,特别面对恶意的ddos攻击的时候.其中CC攻击(Challenge Collapsar)是DDOS(分布式拒绝服务)的一种,也是一种常见的网站攻击方法,攻击者通过代理服务器或者肉鸡向向受害主机不停地发大量数据包, 造成对方服务器资源耗尽,一直到宕机崩溃. cc攻击一般就是使用有限的ip数对服务器频繁发送数据来达到攻击的目的,nginx可以通过HttpLimitReqModul和HttpLimitZo

随机推荐