由于分布式session一文中用到了Nginx相关知识,因此在此处做下总结。本文不是Nginx基础教程,而只是简单的学习总结,如果需要详细的教程,请参考官网文档。
1. 什么是nginx服务器
2. nginx能干什么
2.1 负载均衡
2.2 反向代理
2.3 动静分离
3. nginx
3.1 常用命令
nginx -v
nginx -s stop
ps -ef | grep nginx
1 | 重新加载配置文件 |
3.2 nginx配置文件
由3部分组成
全局块
event块
服务器和用户网络的连接,最大连接数等
http块
配置最频繁的地方
http全局块 + server块
1 | server |
反向代理实例 通过改hosts文件和nginx配置,通过nginx代理访问本地无法直接访问的地址。
负载均衡实例:http块
upstream your_server_name {
server 127.0.0.1:9090;
server 127.0.0.1:9091;
}
负载均衡策略:轮询、weight、ip_hash(根据请求ip做hash,每个用户访问的机器固定,可以解决分布式session问题)、fair(根据服务器的响应时间来分配,响应时间越短的优先分配)
动静分离:把静态文件独立成单独的域名,放在独立的服务器上,是比较主流的方式;第二种是动态和静态放一起发布,通过nginx分开(为啥要分开?)
提高访问效率。expires参数减少不常变动文件的缓存过期时间。
动静分离的例子有点挫,后面自己找一个吧。
高可用例子:nginx宕机了就没法实现反向代理了,如何高可用?2台nginx + 都安装keepalived + 对外使用同一个虚拟ip。
配置keepalived后,实现高可用。
启动nginx(两个均配置好tomcat )
启动keepalived
原理
master进程和worker进程
worker争抢client请求
- 机制的好处?
- 连接数worker_connection, 一个client最多占用worker几个连接?2或4个(异步请求算2个连接,如果需要请求tomcat就4个,否则2个。)
- 一个master,4个worker,每个worker怎么计算最大并发数? 普通静态代理:worker_connection worker_count / 2 ;http反向代理的话:worker_connection worker_count / 4