之前,在我们的NGINX流量管理和安全控制系列中,我们讨论了如何使用客户端标识参数(例如 IP 地址)来限制同一客户端可以与您的 Web 资源建立的连接数。我们还介绍了如何限制Web 资源的请求速率(限制客户端可以发出请求的速率)。
为确保您的应用程序使用带宽不被单个客户端占用,您需要控制每个客户端的上传和下载速度。这是一种常见的NGINX安全控制措施,可抵御来自试图滥用站点性能的恶意用户的DoS(拒绝服务)攻击。
在本系列的第三部分中,我们将解释如何限制NGINX Web 服务器中的网络带宽。
NGINX 中的带宽限制
要限制 NGINX 中的带宽,请使用limit_rate
指令来限制响应传输到客户端的速率。它在位置块中的HTTP、server、location和if 语句中有效,并且默认情况下以每秒字节数为单位指定给定上下文的速率限制,也可以使用m表示兆字节或g表示千兆字节。
limit_rate 20k;
另一个相关指令是limit_rate_after
,它指定在传输指定数量的数据之前,不应限制连接的速率。该指令可以在 HTTP、服务器、位置和“位置块内的 if 语句”中设置。
limit_rate_after 500k;
下面是一个示例配置,用于限制客户端通过单个连接以每秒 20 KB 的最大速度下载内容。
upstream api_service {
server 10.1.1.10:9051;
server 10.1.1.77:9052;
}
server {
listen 80;
server_name testapp.tecmint.com;
root /var/www/html/testapp.tecmint.com/build;
index index.html;
location / {
try_files $uri $uri/ /index.html =404 =403 =500;
}
location /api {
proxy_pass http://api_service