Nginx学习(四)

Nginx模块化体系

## Nginx 负载均衡解析

使用Nginx搭建3台Tomcat集群

大致的配置文件如下:

#配置上游服务器
upstream tomcats{
    server 192.168.247.134:8080;
    server 192.168.247.135:8080;
    server 192.168.247.136:8080;
}
server{
    listen  80;
    # 访问时候通过域名访问即可,但是服务器上得加域名映射 /etc/hosts
    server_name www.tomcats.com;

    #配置匹配规则
    location / { 
        proxy_pass http://tomcats;
    }   
    
}

负载均衡策略

轮询

轮询即是每一台每次都顺序访问一次,Nginx默认配置就是轮询策略;

加权轮询

权重如何去配呢?默认为1

以weight来分配权重;

upstram 指令参数
  • max_conns: 限制连接的最大数值;
  • down:标识服务器状态为不可用,表示服务器中的某一台服务器不可用;

server 192.168.247.137 down;

  • slow_start
  • backup :表示某一台备用机,如果其他服务器正常,该服务器不会被使用l

server 192.168.247.137 backup;

  • max_fails: 表示失败的最大数;
  • fail_timeout:表示在一个时间内失败等待的时间,不会再有请求发送到该服务器上,等时间段过后,请求会重新请求到宕机的服务器上;

使用keepalive提高吞吐量

#配置上游服务器
upstream tomcats{
    server 192.168.247.134:8080 weight=1;
    server 192.168.247.135:8080 weight=2;
    server 192.168.247.136:8080 weight=5;
    
    #配置长连接的数量
    keepalive 32; 
}
server{
    listen  80; 
    server_name www.tomcats.com;

    #^~ 以某个字符路径开头请求
    location / { 
        proxy_pass http://tomcats;
    	
        #配合长连接数量
        proxy_http_version 1.1;
        proxy_set_header Connection ""; 
    }   
    
}

IP_Hash

根据请求的用户IP经过Hash之后分配到对应的服务器上

保证每次请求的IP能够访问到同一台服务器上;

Hash算法

Nginx设置ip_hash
#配置上游服务器
upstream tomcats{
    #设置iphash
    ip_hash;
    
    server 192.168.247.134:8080;
    server 192.168.247.135:8080;
    server 192.168.247.136:8080;
    
    #配置长连接的数量
    keepalive 32; 
}
server{
    listen  80; 
    server_name 192.168.247.130;

    #^~ 以某个字符路径开头请求
    location / { 
        proxy_pass http://tomcats;
    
        proxy_http_version 1.1;
        proxy_set_header Connection ""; 
    }   
    
}

IP_Hash算法时做hash的算法是前三段的值去做的hash:192.168.247

一致性Hash算法

负载均衡的IP_Hash是简单的hash取模算法,如果固定的服务器数量变化,那么这个hash算法会重新进行Hash求模运算,这样用户在以前的服务器的会话信息会丢失,这样就引出了一致性哈希算法;

原始:

如果节点3的服务器宕机:

如果请求量过大,需要扩容机器之后:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-kRCtudl3-1587484163269)(C:\Users\VLEUSCHEN\Desktop\Nginx的学习\image-20200419222133652.png)]

负载均衡之URL_HASH

负载均衡之leat_conn

根据最小连接数去请求,最终落到请求数最小的那台服务器上;

Nginx缓存

expires指令

控制浏览器缓存的过期时间

Nginx反向代理缓存

具体配置内容如下:

# 重点配置内容如下:
# proxy_cache_path 设置缓存保存的目录
# keys_zone 设置共享内存以及占用的空间大小
# max_size 设置缓存大小
# inactive 缓存超过该时间,缓存自动被清理掉
# use_temp_path 关闭临时目录
proxy_cache_path /usr/local/nginx/upstream_cache keys_zone=mycache:5m max_size=1g inactive=30s use_temp_path=off;


#配置上游服务器
upstream tomcats{
    #设置iphash
    #ip_hash;
    
    server 192.168.247.134:8080;
    server 192.168.247.135:8080;
    server 192.168.247.136:8080;
    
    #配置长连接的数量
    keepalive 32; 
}
server{
    listen  80; 
    server_name www.tomcats.com;
    
    # 开启并且使用缓存,名字和上面key_zone的值保持一致
    proxy_cache mycache;
    
    # 针对200和304状态码的缓存设置过期时间
    proxy_cache_valid 200 304 8h; 

    #^~ 以某个字符路径开头请求
    location / { 
        proxy_pass http://tomcats;
    
        proxy_http_version 1.1;
        proxy_set_header Connection ""; 
    }   
    
}

Nginx配置SSL证书提供Https访问

算了,我没域名,没法弄。。。

Nginx之动静分离

动静分离的特点

  • 分布式:动态的Api接口和静态资源进行分开,减少后台服务器的压力,对静态资源进行缓存;
  • 前后端解耦,前后端分离,前后端分开部署发布,减少运维复杂度;
  • 静态资源归Nginx管理;
  • 接口服务化:统一封装接口对外提供服务;

动静分离的数据指什么

  • 静态数据:css/js/html/images/audios/videos…;
  • 动态数据:得到的响应可能会和上一次有所不同;

动静分离的实现方式

CDN

CDN: 内容分发网络,针对静态资源的加速,拉取离用户最近机房的静态资源;

Nginx

Nginx动静分离的问题

  • 跨域问题;

    • Springboot
    • Nginx
    • Jsonp
  • 分布式会话问题;

    • 分布式缓存中间件Redis
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值