nginx 核心应用和配置

nginx 负载均衡的配置主要用的是upstream_module。

官方文档:http://nginx.org/en/docs/http/ngx_http_upstream_module.html

Nginx 请求执行过程分析
这里写图片描述

location 相关参数与配置

root                #站点根路径
index               #首页
proxy_pass           # 代理服务
proxy_redirect off;   # 是否允许重定向
proxy_set_header Host $host; # 传 header 参数至后端服务
proxy_set_header X-Forwarded-For $remote_addr;
proxy_connect_timeout 90; # 连接代理服务超时时间
proxy_send_timeout 90; # 请求发送最大时间
proxy_read_timeout 90;  # 读取最大时间
proxy_buffer_size 4k; 
proxy_buffers 4 32k;
proxy_busy_buffers_size 64k; 
proxy_temp_file_write_size 64k;
upstream dynamic {  //upstream 名称
    zone upstream_dynamic 64k;

    server backend1.example.com      weight=5;   //权重
    server backend2.example.com:8080 fail_timeout=5s slow_start=30s; //fail_timeout踢出后,重新探测时间;slow_start当节点恢复,不立即加入过30s之后再启用
    server 192.0.2.1                 max_fails=3;  //失败多少次认为主机已挂掉,踢出
    server backend3.example.com      resolve;
    server backend4.example.com      service=http resolve;

    server backup1.example.com:8080  backup;  //备用的服务1
    server backup2.example.com:8080  backup;  //备用的服务2
}

server {
    location / {
        proxy_pass http://dynamic;
        health_check;
    }
}

upstream 参数

service 反向服务地址 加端口 weight 权重 max_fails =1 失败多少次 认为主机已挂掉则,踢出 fail_timeout 踢出后重新探测时间 backup 备用服务 max_conns 允许最大连接数 slow_start 当节点恢复,不立即加入

nginx 负载算法

算法 释义
ll + weight 默认的是轮询+权重
ip_hash 给予hash计算,用户保持session一致性
url_hash: (第三方) 应用场景:静态资源缓存,节约存储,加快速度
least_conn 最少链接
least_time 最小的响应时间,计算节点平均响应时间,然后取响应最快的那个,分配更高权重。



Nginx 应用实战



动静分离实现

有三种方案可以实现动静分离
基于目录实现
基于正则表达示判断文件后缀实现

动静分离配置

location \ {
       proxy_pass http://tl_dynamic;
}
location ~ \.(gif|jpg|png|htm|html|css|js|flv|ico|swf)(.*) {
       proxy_pass http://tl_static;
}

防盗链实现

location ~* \.(gif|png|jpg|swf|flv)$    {
          root html;
          valid_referers none blocked *.tl.com;
          if ($invalid_referer) {
              rewrite ^/  http://www.tl.com/image/403.png;
              #return 404;
      }
}

城市静态站点实现

server {
        listen       80;
        server_name  *.tl.com;
        root /data/www/$host;
        access_log  logs/$host.access.log;
        location / {
         index  index.html;
       }
}
本站公众号
   欢迎关注本站公众号,获取更多程序园信息
开发小院