万达换票券 发表于 2018-11-10 08:28:11

nginx限速方法以及报错处理

  本文出自 “技术成就梦想” 博客,转载请与作者联系!
  注意:
  nginx 1.1.8 之后的版本的语法改为limit_conn_zone $binary_remote_addr zone=NAME:10m;
  NAME 就是 zone 的名字详情请看这里 http://nginx.org/en/docs/http/ngx_http_limit_conn_module.html
  限制连接数:
  要限制连接,必须先有一个容器对连接进行计数,在http段加入如下代码:
  "zone=" 给它一个名字,可以随便叫,这个名字要跟下面的 limit_conn 一致
  $binary_remote_addr = 用二进制来储存客户端的地址,1m 可以储存 32000 个并发会话
  ... 省掉 N 字
  http
  {
  limit_conn_zone $binary_remote_addr zone=addr:10m;
  接下来需要对server不同的位置(location段)进行限速,比如限制每个IP并发连接数为1,则
  server
  {
  listen 80;
  server_name 192.168.11.128;
  index index.html index.htm index.php;
  limit_conn addr 1; #是限制每个IP只能发起1个连接 (addr 要跟 limit_conn_zone 的变量对应)
  limit_rate 100k; #限速为 100KB/秒
  root html;
  注意事项:
  limit_rate 100k; //是对每个连接限速100k。这里是对连接限速,而不是对IP限速!如果一个IP允许两个并发连接,那么这个IP就是限速limit_rate * 2
  也可参考好文:http://www.y7lai.com/105.html
  注意默认限速大小单位B与家用带宽相差8倍
  ~~~~~~~报错~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~·

  nginx: zero>  检查主配置文件:“limit_conn perip 1;”,但是http段落没有“limit_conn_zone $binary_remote_addr zone=addr:10m;”添加此内容。指定的参数跟后面限速参数要一致导致,perip
  修改为addr。
  针对目录限速示例:
  http {
  limit_conn_zone $binary_remote_addr zone=addr:5m;
  server {
  listen       80;
  server_name172.21.9.2;
  charset utf-8;
  index index.html;
  location ~* /client/download/ {
  limit_conn addr 1;
  limit_rate 100k;
  }
  }
  }

页: [1]
查看完整版本: nginx限速方法以及报错处理