一、前言
为了防止访问服务器的流量超过服务器最大承载量,需要对服务器访问流量进行限制,因为业务访问通过nginx进行转发,所以采取nginx配置进行限流操作。使用了nginx自带的两个模块ngx_http_limit_conn_module,ngx_http_limit_req_module进行限流,具体参考来源官网文档。
http://nginx.org/en/docs/http/ngx_http_limit_req_module.html
http://nginx.org/en/docs/http/ngx_http_limit_conn_module.html
二、nginx详细配置
方法一:ngx_http_limit_req_module
配置实例
http { limit_req_zone $binary_remote_addr zone=one:10m rate=1r/s; ... server { ... location /search/ { limit_req zone=one burst=5; }
以上配置只针对/search 业务有效,如果需要配置所有业务需要将 limit_req zone=one burst=5; 放置到http 段。
方法二:ngx_http_limit_conn_module
http{ #限流 limit_conn_log_level error;#限流log输出级别 limit_conn_status 503;#限流返回状态码 limit_conn_zone $server_name zone=perserver:10m;# 设置变量存储空间 limit_conn_zone $binary_remote_addr zone=addr:10m;#设置变量存储空间 limit_conn addr 100;#最大同时连接数,根据需求设置。 }