nginx常用指令及使用(五)

geo模块主要用于做全局负载均衡,根据不同地区的ip可以访问到不同的服务器,eg: 

  
  
  1. geo $geo {
  2.   # geo默认使用ip进行全局均衡,0.7.27版本之后支持指定变量做均衡
  3.   # eg geo $$arg_remote_addr $geo {...}
  4.     default default;
  5.     218.30.115.0/24 china_telecom;
  6.     202.106.182.0/24 china_unicom;
  7.   }
  8.   upstream default.server{
  9.      server 192.168.0.2;
  10.   }
  11.   upstream china_telecom.server{
  12.      server 192.168.0.3;
  13.   }
  14.   upstream china_telecom.server{
  15.      server 192.168.0.4;
  16.   }

http headers模块:添加额外的返回头信息

add_header指令用来添加一个请求头

expires控制页面缓存过期


http limit zone模块:

用于对针对条件进行会话的并发连接数限制,eg限制每个ip的并发连接数

eg:

  
  
  1. http {
  2.   limit_zone  one  $binary_remote_addr 10m;
  3.   server{
  4.     location /download/{
  5.        limit_conn one 1;
  6.     }
  7.  }
  8. }

limit_zone zone_name $var memory_max_size 定义一个数据区,记录会话状态信息,$var会判断会话的变量,memory_max_size 定义内存记录区的总容量

 上边的实例:limit_zone  one  $binary_remote_addr 10m; 定义了一个叫one的记录区,大小为10m,以变量$binary_remote_addr作为会话的判断基准

limit_conn zone_name max_client_per_ip 设置一个会话的最大连接数


http limit req模块

允许对单个session会话,单个ip限定指定单位时间内的并发请求数,一定程度上减轻而已的dos攻击

  
  
  1. http {
  2.   limit_req_zone $binary_req_zone zone=one:10m rate=1r/s;
  3.   ...
  4.  server{
  5.   ...
  6.   location /search/ {
  7.      limit_req zone=one burst=5;
  8.   }
  9.  }
  10. }

limit_req_zone $session_var zone=name_of_zone:size rate=rate

默认none 用于定于一块内存存储区域,用来存储session会话的状态,session变量的值是由指定的变量构成,常设置为client ip如:$binary_remote_addr(使用binary_remote_addr可以比remote_addr节省64byte的存储空间,1M内存可以存储大概16000个会话)

限制的条件可以设置为 请求数/秒(r/s) 或者 请求数/分钟(r/m),

limit_req用于指定使用的内存存储区(zone)名称,以及最大的突发请求数(burse)

若请求的速率超过limit_req_zone设置的rate,这些请求将被延迟处理直到这些请求的数量不超过burst的值,这种情况下,请求返回503 Service Unavariable

上述示例的含义是:允许一个用户每秒不超过1个请求,同时处理的查询数量最多不超过5个,若查询数<5延迟非必须。可以设置nodelay eg:limit_req_zone zone=one burst=5 nodelay;



http map模块

允许分类或者映射一组值到一组不同的值,并且将这些值存储在一个变量里,eg

  
  
  1. map $http_host $name{
  2.  hostnames;
  3.  default 0;
  4.  example.com 1;
  5.  *.example.com 1;
  6.  test.com 2;
  7.  *.test.com 2;
  8.  .size.com 3;
  9. }

可以使用本地模块的映射来替代许多的server/location指令或者redirect  eg:

  
  
  1. map $uri $new{
  2.  default http://nj.com/home;
  3.  /aa  http://aa.nj.com/;
  4.  /bb http://bb.nj.com/;
  5. /join http://nj.com/users/join;
  6. }
  7. server {
  8.  server_name nj.com;
  9.  rewrite ^ $new redirect;
  10. }

map指令:map $var1 $var2 {...}

定义了用来设置变量的映射表,default定义无匹配时的默认值

hostnames支持近似域名查找

include包含一个含有映射信息的文件

map_hash_max_size用于设置保存变量映射关系的哈希表的最大值

map_hash_bucket_size n 用于设置一张hash表中映射变量的最大值,应该取决于处理器的缓存大小


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值