前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Nginx 限制资源的访问

Nginx 限制资源的访问

作者头像
剧终
发布2020-10-09 11:23:23
1.8K0
发布2020-10-09 11:23:23
举报
文章被收录于专栏:Linux学习日志Linux学习日志

Nginx可以限制

代码语言:javascript
复制
每个键值(例如,每个IP地址)的连接数
每个键值的请求率(在一秒钟或一分钟内允许处理的请求数)
连接的下载速度
请注意,可以在NAT设备后面共享IP地址,因此应谨慎使用IP地址限制

限制并发

代码语言:javascript
复制
http {
  .......... #省略部分内容 
  limit_conn_zone $binary_remote_addr$uri zone=xzbf:10m;
  limit_conn_status 503;

server {
  listen  80;

location / {
  root   html;
  limit_conn xzbf 1;
}
}
}
参数解释
代码语言:javascript
复制
#定义名为xzbf的limit_zone,大小10M内存来存储session,用客户IP及访问uri作为键值进行存储,作为会话的判断基准,一个IP一个会话,也可以变量$server_name作为会话的判断基准
limit_conn_zone $binary_remote_addr$uri zone=xzbf:10m;

#限制发生时向客户端返回的错误码
limit_conn_status 503;

#设定最大并发连接数 如果并发请求超过这个限制,那么将返回预定错误limit_conn_status
limit_conn xzbf 1;

限制请求速率

代码语言:javascript
复制
http {
  .......... #省略部分内容 
  limit_req_zone $binary_remote_addr$uri zone=xzqqsl:10m rate=1r/s; 

server {
  listen  80;
   
location / {
  limit_req zone=xzqqsl burst=5 nodelay;
  #limit_req zone=xzqqsl burst=5 delay=3;
}
}
}

参数解释

代码语言:javascript
复制
#limit_req_zone 参数
zone=xzqqsl:10m  #内存区域大小为10m,并且设定了名称为xzqqsl
rate=1r/s    #表示请求的速率是1秒5个请求

#limit_req 参数
#表示这个参数对应的全局设置就是xzssql的那个内存区域
zone=xzqqsl

#表示队列的大小为5个请求,如果此时同一个客户端进来10个请求,那么只有5个请求可以按每秒一个的频率被处理,剩下五个将会拒绝处理,返回503状态码
burst=5 

#使用此配置时,前3个请求delay会立即传递,后2个请求burst- delay会以总速率不超过指定速率的方式被延迟,因为超出了总突发大小,其他多余的请求将被拒绝,后续请求将被延迟
delay=3

错误页面的设置

代码语言:javascript
复制
http {
  .......... #省略部分内容 
  limit_req_zone $binary_remote_addr$uri zone=xzqqsl:10m rate=1r/s; 

server {
  listen  80;
  root html;
  error_page 503 /error_503.html;
location / {
  limit_req zone=xzqqsl burst=5 nodelay;
}
location = /error_503.html {
  root html;
}
}
}

限制带宽

代码语言:javascript
复制
http {
limit_conn_zone $binary_remote_addr zone=down:10m;
server {
    listen 80;
    root /var/www/html;  #文件服务路径
location / {
  autoindex on;               #开启索引功能  
  autoindex_exact_size off;   #显示出文件的确切大小,单位是bytes
  autoindex_localtime on;     #显示文件大小
  limit_conn  down 1;   #限制同一个IP只能建立一个下载连接
  limit_rate_after 10m; #在10M以后的数据才开始进行速率限制
  limit_rate  100k;     #限制速率为100k
}
}
}

生成测试文件

代码语言:javascript
复制
head -c 100000000 /dev/zero > /var/www/html/test  #生成一个100M文件
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Nginx可以限制
  • 限制并发
    • 参数解释
    • 限制请求速率
      • 参数解释
        • 错误页面的设置
        • 限制带宽
          • 生成测试文件
          相关产品与服务
          腾讯云服务器利旧
          云服务器(Cloud Virtual Machine,CVM)提供安全可靠的弹性计算服务。 您可以实时扩展或缩减计算资源,适应变化的业务需求,并只需按实际使用的资源计费。使用 CVM 可以极大降低您的软硬件采购成本,简化 IT 运维工作。
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档