Nginx 配置对流量、连接和请求的限制

首先给出配置段:

http {

    limit_conn_zone $binary_remote_addr zone=one:10m;

    limit_req_zone $binary_remote_addr zone=one:10m rate=1r/s;

    ...

    server {

    ...

        location /download/ {

         limit_rate 500k;

         limit_rate_after 50m;

         limit_conn one 1;

       limit_req zone=one burst=5;    }

  ...
}

  

1、 limit_rate指令

  limit_rate开启nginx限速功能,可配置在http、server、location和if in location配置段。 limit_rate 500k表示限速500kB每秒,限速对象是单个连接,因此如果一个IP有多个连接的话,每个连接都是限速500k。limit_rate还有在特定情况下开启限速的功能。

limit_rate_after和 limit_rate配合使用表示在下载的文件大小达到设定数后开启限速效果(逐渐降速)。同样针对于单个连接。设定大小设置太小的话可能效果不准确。

2、Module ngx_http_limit_conn_module 模块

  limit_conn_zone $binary_remote_addr zone=one:10m模块开启对单个ip、单个会话同时存在的连接数的限制。这里定义一个记录区one,one的总容量是10m,该记录区针对于变量 $binary_remote_add生效,这里是针对单个IP生效。该模块只是一个定义,配置在http配置段,需要配合limit_conn指令使用才生效, limit_conn one 1表示该location段使用one定义的 limit_conn_zone ,对单个IP限制同时存在一个连接。

PS:limit_conn_zone0.8版本之前叫

与现在有一定的差别。

3、ngx_http_limit_req_module 模块

  limit_req_zone $binary_remote_addr zone=one:10m rate=1r/s模块开启对单个ip、单个会话在单位时间内请求的限制。这里zone和limit_conn_zone模块一样,rate表示限制的速率,1r/s表示一秒之内最多1次请求,也可以用5r/m,表示一分钟之内最多5次请求。limit_req_zone同样配置在http配置段。与limit_req指令配合使用才生效。limit_req zone=one burst=5表示该location段使用one定义的limit_req_zone,如果请求数超过 rate=1r/s,剩下的请求将被延迟处理,如果请求数超过burst定义的数量,多余的请求则直接返回503错误。

如果开启nodelay,则超过rate=1r/s的请求直接返回503,不再延迟处理。

时间: 2024-08-30 02:47:14

Nginx 配置对流量、连接和请求的限制的相关文章

Nginx与Tomcat、Client之间请求的长连接配置不一致问题解决[转]

http://bert82503.iteye.com/blog/2152613 前些天,线上出现“服务端长连接与客户端短连接引起Nginx的Writing.Active连接数过高问题”,这个是由于“服务端使用HTTPs长连接,而客户端使用短连接”引起.这几天,发现Nginx与Tomcat之间也存在同样的问题,原因是两边的相关配置参数不一致引起的.(这是心细活!) 先说说服务为什么使用HTTPs长连接技术?有如下几个原因: 对响应时间要求较高: 服务走的是公网,客户端与服务端的TCP建立的三次握手

nginx配置长连接(ajax60秒请求超时)

1.在使用ajax做轮训的时候前台发出的ajax请求总是会在60秒之后返回405超时响应,经过排除ajax超时响应设置后猜测nginx对请求进行了超时响应处理,猜测是nginx配置有问题: server{listen 80;server_name wenhaofan.com;location / { proxy_http_version 1.1;  proxy_read_timeout 600s;  #新增配置1 proxy_send_timeout 120s; #新增配置2 proxy_pas

Nginx 流量带宽等请求状态统计( ngx_req_status)

Nginx流量带宽等请求状态统计 ( ngx_req_status) 插件下载地址: wget http://nginx.org/download/nginx-1.4.2.tar.gz git clone https://github.com/zls0424/ngx_req_status.git 配置示例: 1.服务目录 mkdir /opt/server 2.补丁导入: patch -p1 < /opt/server/ngx_req_status/write_filter-VERSION.pa

ngxin常用配置--nginx之proxy_pass代理后端https请求完全解析

前言 本文解释了怎么对nginx和后端服务器或代理服务器进行加密http通信 内容提纲 前提条件 获取SSL服务器证书 获取SSL客户端证书 配置nginx 配置后端服务器 完整示例 前提条件 nginx源码或nginx plus源码 一个代理服务器或一个代理服务器组 SSL证书和私钥 获取SSL服务器证书 你可以从一个可信任证书颁发机构(CA)购买一个服务器证书,或者你可以使用openssl库创建一个内部CA签名,并且给自己颁发证书.这个服务器端证书和私钥需要部署在后端的每一个服务器上. 你还

【Nginx】配置、error日志和请求上下文

处理http配置项可以分为下面4个步骤: 1)创建数据结构用于存储配置项对应的参数 2)设定配置项在nginx.conf中出现时的限制条件与回调方法 3)实现第2步中的回调方法,或者使用Nginx框架预设的14个回调方法 4)合并不同级别的配置块中出现的同名配置项 一.分配用于保存配置参数的数据结构 创建结构体来存储配置项的参数值,使用create_main_conf,create_srv_conf.create_loc_conf这三个回调方法把我们分配的用于保存配置项的结构体传递给http框架

nginx配置php连接

1.php-fpm以root权限启动 sudo vim /usr/local/php/etc/php-fpm.d/www.conf sudo /usr/local/php/sbin/php-fpm -R 2.nginx配置php-fpm为web socket连接 sudo vim /usr/local/nginx/conf/nginx.conf 3.编写php文件 cd /usr/local/nginx/ sudo chmod 777 html/ -R cd html vim index.php

nginx配置php环境,并测试PHP是否可以连接mysql

nginx配置文件: server {         listen       80;             root      /var/www/html;         server_name  localhost;         charset utf-8;         index  index.html index.htm index.php;         location ~ .*.(php|php5)?${             fastcgi_pass 127.0

nginx配置之深入理解

继上一篇<debian+nginx配置初探--php环境.反向代理和负载均衡>成功之后,有点小兴奋,终于不用整lvs那么复杂来搞定负载,但还是有很多概念没弄清楚. 什么是CGI.FastCGI.PHP-CGI.PHP-FPM.Spawn-FCGI? CGI全称是“通用网关接口”(Common Gateway Interface),其实我理解的是一个协议,它描述了客户端和HTTP服务器之间如何传输数据,因此它有各种语言的实现如perl.tcl等,php的实现就是php-cgi.而由于CGI的缺点

Nginx配置进阶(四)

Nginx配置 ============================================================================ 概述: ==================================================================== Web 架构扩展思路 1.正向代理和反向代理: ★正向代理 定义: 是一个位于客户端和原始服务器(origin server)之间的服务器,为了从原始服务器取得内容,客户端向代理发送一