nginx限流

  • limit_req zone=req_zone;
    • 严格依照在limti_req_zone中配置的rate来处理请求
    • 超过rate处理能力范围的,直接drop
    • 表现为对收到的请求无延时
  • limit_req zone=req_zone burst=5;
    • 依照在limti_req_zone中配置的rate来处理请求
    • 同时设置了一个大小为5的缓冲队列,在缓冲队列中的请求会等待慢慢处理
    • 超过了burst缓冲队列长度和rate处理能力的请求被直接丢弃
    • 表现为对收到的请求有延时
  • limit_req zone=req_zone burst=5 nodelay;
    • 依照在limti_req_zone中配置的rate来处理请求
    • 同时设置了一个大小为5的缓冲队列,当请求到来时,会爆发出一个峰值处理能力,对于峰值处理数量之外的请求,直接丢弃
    • 在完成峰值请求之后,缓冲队列不能再放入请求。如果rate=10r/s,且这段时间内没有请求再到来,则每6 s 缓冲队列就能回复一个缓冲请求的能力,直到回复到能缓冲5个请求位置。
load_module modules/ngx_stream_module.so;   #动态加载模块,必须写道开头
user  nginx;   #使用useradd nginx    添加一个nginx用户
worker_processes  4;   #cpu核心数 * 2
worker_rlimit_nofile   102400;  #配置nginx打开最大文件数  (每个工作进程绑定一个cpu,worker_cpu_affinity配置)
worker_cpu_affinity 0001 0010 0100 1000;  #工作进程使用哪个cpu的核心 (以四核为例)  0001是4核的第一个核心 0010是4核的第二个核心 

#error_log  logs/error.log;
#error_log  logs/error.log  notice;
error_log  logs/error.log  info;

pid        logs/nginx.pid;


events {
    use epoll;
    worker_connections  10240;
}


http {
    include       mime.types;
    default_type  application/octet-stream;

    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';

    #access_log  logs/access.log  main;   #在server虚拟目录里面配置日志,这里是全局日志

    sendfile        on;   
    #tcp_nopush     on;

    

    server_tokens off;  #错误的时候关闭输出版本号


    #keepalive_timeout  0;
    keepalive_timeout  30;

    gzip  on;   #压缩会占用cpu
    gzip_buffers 4 16k;
    gzip_comp_level 3;  #压缩等级
    gzip_disable "MSIE[1-6]";   #ie浏览器1-6禁用gzip
    gzip_min_length 1k;
    gzip_http_version 1.0;
    gzip_types text/plaion application/html application/css application/js;  #可以压缩的文件类型
    gzip_vary on;  #根据http头判断是否支持压缩

    client_max_body_size 8m;   #默认允许客户端最大上传文件大小
	
	#限流
	#limit_conn_zone $binary_remote_addr zone=addr:10m;         	 #并发限制(同时启用一个)
	limit_req_zone $binary_remote_addr zone=qps:10m rate=1r/s;  	 #请求限制   每秒钟处理一个请求
	limit_conn_log_level error;
	limit_conn_status 503;   #超出限制时,返回状态码
	
	
	server{
		#limit_conn addr 1;  #并发限制设置为1,是为了测试 addr是zone空间在53行(同时启用一个)
		
		#limit_req zone=qps;  #请求限制 
		limit_req zone=qps burset=1 nodelay;  #请求限制()
		
	}
	
	
	
	
	
	
	
	#限流end
	
}

 

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
宝塔面板是一款开源的服务器管理面板,通过宝塔可以轻松管理服务器上的各种资源及服务。而nginx则是一款高性能的Web服务器,通过nginx可以有效地提升网站的性能。在建立一个高流量的网站或者服务时,往往需要对访问量进行限制来保证服务器的稳定性,而nginx有着丰富的限流配置功能,可以通过宝塔面板上的配合来实现。 要实现nginx限流功能,主要是通过nginx里面的limit_req模块来完成。宝塔面板上的nginx限流功能主要是针对limit_req模块进行配置的。其具体配置方式是在宝塔面板上找到网站设置,在配置选项中选择nginx高级配置,然后在location中添加limit_req配置即可。这里需要简单介绍一下nginx limit_req模块的参数配置:limit_req_zone、limit_req等。其中limit_req_zone参数 mainly是配置一些基本变量,用于nginx来记录请求的状态。此外,还通过limit_req参数来控制请求速度,该参数可包括limit_req_zone、rate和burst等。 总体来说,宝塔nginx限流操作相对简单,只需要按照上述步骤进行一些简单配置,即可实现对服务器的流量进行限制。但需要注意的是,具体的限流配置应该根据实际的情况进行调整,这样才能实现最佳的限流效果。另外,在限流时,还要注意用户的访问体验,适度限制,以免出现过度限制的情况,将用户严重的限制在界外。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值