Z次元
文章 笔记 日志
专题
专栏分类
文章归档
友链
友情链接
朋友圈
留言
头像
系列文章
使用Nginx实现限流效果
系列文章
前端知识积累
更新于:2025/10/27
|
发布于:2025/10/27
文章摘要
......

前言

我们知道,通过后台代码可以实现多种方式限流。那么有没有更简单的方式,不用修改代码也能实现限流呢,那就是使用Nginx。

Nginx提供了多种策略可以实现限流的效果。

限制每秒的请求数

通过Nginx内置的ngx_http_limit_req_module 模块,限制客户端的请求速率。

示例:

# 声明一个全局或者server块
http {
    limit_req_zone $binary_remote_addr zone=mylimit:10m rate=9r/s; 
}

# 使用配置的限速模块
location /ahzoo/api {
    limit_req zone=mylimit burst=99 nodelay;
}

参数说明:

  • zone=req_limit:10m:创建10MB内存区域存储IP请求记录

  • rate=9r/s:限制速率为每秒9个请求

  • burst=99:允许99个请求排队等待

  • nodelay:超出速率的请求立即返回503,不延迟处理

从多个维度进行限制:

http {
    limit_conn_zone $binary_remote_addr zone=per_ip:10m;
    limit_conn_zone $server_name zone=per_server:10m;
    
    server {
        limit_conn per_ip 9;       # 单IP并发9连接
        limit_conn per_server 999; # 服务器总并发999连接
    }
}

通过连接数进行限制

通过Nginx内置的ngx_http_limit_conn_module 模块,限制并发连接数。

示例:

http {
    limit_conn_zone $remote_addr zone=perip:10m;
}

server {
    limit_conn perip 99; # 每个 IP 同时允许99个连接
}

地区访问限制

通过ngx_http_geoip_module 模块,实现区域访问限制。

这个模块需要配合GeoIP库来使用,所以需要提前安装GeoIP库。

示例:

geo $mycountry {
    default 0;
    country china US 1; # 允许中国和美国的 IP
    #set $geoip_city "nj";
}

server {
    if ($mycountry != 1) {
        return 444; # 如果不在白名单国家,则返回 444
    }
}

黑白名单限制

如果需要对具体的IP进行限制,就可以通过设置黑白名单来实现。

示例:

location / {
    deny 192.168.0.1; # 黑名单
    allow 192.168.1.2; # 白名单
    deny all; # 默认拒绝所有其他 IP
}

版权声明
本文依据 CC-BY-NC-SA 4.0 许可协议授权,请您在转载时注明文章来源为 Z次元 ,若本文涉及转载第三方内容,请您一同注明。
更多专栏文章推荐
前端知识积累
人非生而知之者,孰能无惑?惑而不从师,其为惑也,终不解矣。
浏览器注入外部JS文件
2023/8/13
Vue(JavaScript)下载文件方式汇总
2022/3/31
npm publish发布项目时开启Two-Factor Authentication解决403问题
2026/1/5
评论区

删除确认

评论删除后无法恢复,请确认是否继续?
发表评论

这里还没有评论哦

快来发一条评论抢占前排吧

目录
1
前言
2
限制每秒的请求数
3
通过连接数进行限制
4
地区访问限制
5
黑白名单限制
目录
1
前言
2
限制每秒的请求数
3
通过连接数进行限制
4
地区访问限制
5
黑白名单限制
博客
文章 笔记 日志
专题
专栏分类 文章归档
友链
友情链接 朋友圈
交流
留言 关于我
主页
菜单
置顶
主题
我的
十玖八柒
每天进步多一点
欢迎到访φ(゜▽゜*)♪
最新评论
柒: @Honesty
因为这个系列主要是总结和代码相关的特性,不过这个特性感觉确实可以写一下
Honesty:
哎?Jdk25 对象头压缩这个很重要的特性没记呢
个人占星:
DeepSeek没有想象中的好用
个人占星:
想给自己的网站弄个统计功能,但不会弄,头疼
我的
关于我
个人主页
站点地图
RSS订阅
导航
十年之约
虫洞穿梭
开源博客
前端开源仓库
后端开源仓库
©2020 - 2026 By 十玖八柒 版权所有
豫ICP备20021466号