nginx带宽限制 limit_rate limit_rate_after

知识梳理

在高负载的网络环境下,为了保持服务的稳定性,限速 (download rate) 是一种必要的控制访问量的手段。Nginx 是一款高性能的 Web 服务器和反向代理服务器,可以使用 limit_rate_after 和 limit_rate 两个主要指令来完成流量控制和限速。

limit_rate_after 指令

指令 limit_rate_after 会在客户端成功建立连接之后,指定的大小后开始限制发送速度。这个指令的含义就是在连接建立后的 limit_rate_after 大小之后,数据发送速率将被限制。

以下是limit_rate_after 的语法和示例:

Syntax:	limit_rate_after size;
Default:	
limit_rate_after 0;
Context:	http, server, location, if in location
limit_rate_after 50m;

这个指令可以帮助您限制连接的初始流量,以便于服务器的带宽资源分配更为合理。

limit_rate 指令

limit_rate 指令是用来控制发送至客户端的数据传输速度的,它可以限制整个连接的流量,也可以限制单个客户端访问速度。

以下是 limit_rate 的语法和示例:

syntax:		limit_rate rate;
default:	—
context:	http, server, location
limit_rate 1k;

这个配置的作用是:在与客户端建立连接之后的 10 秒内,限制每秒发送的数据量不超过 50kB;之后如果连接仍然打开,则限制与该客户端的速率为 50kB/s。

需要提醒的一点是,尽管 limit_rate 可以一定程度上保护服务器资源,但是并不足以完全阻止恶意饱和攻击。因此,在考虑流量控制和限速的同时,还应该结合其他安全和防护机制来更好地保护服务器。

实验

配置传输速度为 1k

  • nginx配置
location / {
	limit_rate 1k;
	root html;
}

nginx带宽限制 limit_rate limit_rate_after_第1张图片

  • 在浏览器输入 http://192.168.91.134/portal.tar 下载 portal.tar 文件
    可以看到下载速度在 1k 以内
    nginx带宽限制 limit_rate limit_rate_after_第2张图片

配置下载50m后开始限制传输速度

  • nginx配置
location / {
	limit_rate_after 50m;
	limit_rate 1k;
	root html;
}
  • 在浏览器输入 http://192.168.91.134/portal.tar 下载 portal.tar 文件
    可以看到开始下载速度很快
    nginx带宽限制 limit_rate limit_rate_after_第3张图片
    在下载50m后,速度限制在1k以内
    nginx带宽限制 limit_rate limit_rate_after_第4张图片

我遇到的坑

  • 访问http://192.168.91.134/portal.tar报403

因为我的portal.tar文件没有读的权限,导致浏览器下载报403,使用 chmod 755 portal.tar 修改portal.tar文件的权限,如下图:

nginx带宽限制 limit_rate limit_rate_after_第5张图片

总结

Nginx 的限速功能对于控制访问量、防止恶意攻击具有很高的研究价值和实际意义。limit_rate 和 limit_rate_after 是 Nginx 常见的两个限速指令,它们可以配置在 http、server、location 等区块中,实现不同级别的流量限制和控制。一般情况下为了取得更好的限速效果,我们会同时使用两个指令,通过多事件流的限速进行灵活的控制。

希望这篇文章能够对 Nginx 限速功能有更深入的理解,帮助开发者在实际的生产环境中使用它来进行更好的流量控制和管理。

参考

http://nginx.org/en/docs/http/ngx_http_core_module.html#limit_rate
http://nginx.org/en/docs/http/ngx_http_core_module.html#limit_rate_after

你可能感兴趣的:(nginx,服务器,运维)