Nginx-限制速度-连接数-请求数-优化

 

限制速度

添加

   limit_rate 50k;限制速度50K
   limit_rate_after 1000k;当下载超过1000k时
 location  /mp3 {
         root   html/wyt;
         limit_rate 50k;
         limit_rate_after 1000k;
         auth_basic "wyt";
         auth_basic_user_file htpasswd;
         autoindex on;
          }
dd if=/dev/zero of=100M.dd bs=1M count=100 #建立一个100M的数据文件提供下载

限制连接数

限制并发连接数

http {
limit_conn_zone $binary_remote_addr zone=perip:10m; 
#放到http
server {
    ...
    limit_conn perip 1;#只限制一个IP地址访问
}

建立第二个请求 报503错误 在这里插入图片描述

说明限制,服务器临时不可用

突发限制访问频率

http {
    limit_req_zone $binary_remote_addr zone=one:10m rate=1r/s; #1s一次

    ...

    server {

        ...

        location /mp3/ {
            limit_req zone=one burst=2;
        }

Nginx的限流都是基于漏桶算法

漏桶算法和令牌桶算法

漏桶算法:水先进入到漏桶里,漏桶以一定的速度出水,当水流入速度过大会直接溢出 令牌桶算法:以一个恒定的速度桶会产生令牌,而如果请求需要被处理,则需要先从桶里获取一个令牌,当桶里没有令牌可取时,则拒绝服务。

如何优化Nginx?

  • nginx配置的优化:从进程数、连接设置、缓存设置方面进行优化
  • 从集群架构优化;
  • 让worker进程使用普通用户运行,使用非root运行nginx master;
  • 配置nginx worker进程个数,worker进程为用户提供服务通常设置为cpu核数×2,修改nginx.conf配置文件第一行 : worker_processes 4;