Nginx
nginx是一个轻量级,支持http协议的反响代理服务器。
http协议:
nginx可以通过浏览器,ajax,插件等支持http协议的客户端访问到nginx。
反向代理:
代理:代理的是后端的服务器(tomcat)。
反向:代理控制的访问逻辑集中在后端发送到tomcat服务器的步骤。
在互联网框架中的作用
负载均衡:
负载:高并发的访问压力负重,载重。
均衡:平均分配,后端服务器(后端服务器集群)。
单机的nginx在cpu性能足够的情况下,5万-7万的并发引入前段网络搭建的nginx集群,配合ip入口服务器,dns服务器的配置,实现网络入口的扩大。
负载均衡逻辑:
物理逻辑:平均分配所有访问请求。
逻辑均衡:根据服务器的性能均衡,有占比的访问。
动静分离:
静态资源img,css,js,html等可以放到nginx中被客户端访问,后端服务器专心处理动态数据,nginx专心处理静态文件数据--动静分离。
配置文件编写:
server{
listen 80;
server_name www.os.com;
location /{
proxy_pass http://127.0.0.1:8090/;
}
}
访问逻辑的步骤:
- 浏览器发送请求http://www.os.com/user/query/point?userId=1
- 域名解析通过host文件www.os.com-->127.0.0.1
http://127.0.0.1:80/user/query/point?userId=1
- nginx接收到请求,server判断监听逻辑。
- 实现了监听80监听域名www.os.com的server处理这个请求。
- 进入server的逻辑,匹配location。
- proxy_pass生效,拼接匹配后的剩余的字符串。
user/query/point?userId=1
http://127.0.0.1:8090/user/query/point?userId=1
- tomcat处理请求返回数据到nginx。
- nginx返回数据给客户端。
负载均衡的配置:
1.轮询
upstream orderuserserver{
server 127.0.0.1:8090;
server 127.0.0.1:8091;
server 127.0.0.1:8092;
}
相当于一个对象是List<Server>,Server对象作为元素记录的是服务器的ip:port。
orderuserserver的变量指向了一个内存中包含了3个服务器信息的list对象。
2.权重
权重的意义:根据服务器的性能按照比例的分配所有的并发请求到不同服务器,性能低的处理的并发少,性能高处理的并发多。
upstream orderuserserver{
server 127.0.0.1:8090 weight=1;
server 127.0.0.1:8091 weight=20;
server 127.0.0.1:8092 down;
}
以上配置造成8091所在服务器承担了绝大部分的负载均衡的请求,同时nginx不会在将任何请求发送到8092中,如果集群中有长时间不能恢复的节点,可以用down处理。
3.ip黏着
session的集群共享问题(用户的登录状态访问)。