常识整理

在高负载的网络环境下,为了保持服务的稳定性,限速 (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

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

装备下载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
在下载50m后,速度约束在1k以内
nginx带宽限制 limit_rate limit_rate_after

我遇到的坑

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

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

nginx带宽限制 limit_rate limit_rate_after

总结

Nginx 的限速功用关于操控拜访量、防止歹意进犯具有很高的研讨价值和实际意义。limit_rate 和 limit_rate_after 是 Nginx 常见的两个限速指令,它们可以装备在 http、server、location 等区块中,完成不同等级的流量约束和操控。一般情况下为了获得更好的限速作用,我们会同时运用两个指令,通过多事情流的限速进行灵敏的操控。

期望这篇文章可以对 Nginx 限速功用有更深化的了解,协助开发者在实际的出产环境中运用它来进行更好的流量操控和管理。

参阅

nginx.org/en/docs/htt… nginx.org/en/docs/htt…