# 学习Nginx,你一定要知道这些 {#学习nginx,你一定要知道这些}
# Apahce和nginx的区别 {#apahce和nginx的区别}
nginx相对于apache来说是轻量级,同样是web服务,比apache占用内存及资源更少,抗并发方面也是,nginx处理请求是异步非阻塞的,而apache则是阻塞型的,在高并发下nginx能保持高性能,但是nginx有一些不足,他在健康检查方面只能通过端口来检测,不支持url来检测,并且支持的协议比较少,
# nginx作为负载均衡 {#nginx作为负载均衡}
nginx的负载均衡模块有:upstream模块和proxy模块
nginx负载均衡的策略:轮询,权重,iphash ,还有urlhash
# nginx服务器上master和worker的区别 {#nginx服务器上master和worker的区别}
Worker进程是负责处理请求的进程
master进程负责管理worker进程的同时也负责读取配置文件和判断配置文件语法
在nginx中,master进程只能有一个,而worker进程可以有多个
# 啥是三握四挥 {#啥是三握四挥}
# 以打电话举例 {#以打电话举例}
三次握手:
第一次握手:小明说:"喂喂喂,能听到我说话吗?"
第二次握手:小萌说:"我可以听到你说话,你能听到我说话吗?"(我回了你一句,说明了我可以听到你说话(说明了我具有接受消息的能力))
第三次握手:小明说:"我听到你说话了"(双方都可以听到对方了声音,表示没有问题,样就可以进行通话了(建立了 TCP 连接))
四次挥手:
第一次挥手:小明:"我说完了,我要睡了"(主动关闭方发送一个信息,告诉告诉被动关闭方:我已经不会再给你发数据了)
第二次挥手:小萌:"好的,知道了"(被动关闭方收到信息,发送一个类似收到的信息给对方)
第三次挥手:小萌:"恩,我也说完了"(被动关闭方发送一个信息,告诉主动关闭方,我的数据也发送完了,不会再给你发数据了)
第四次挥手:小明:"恩"(主动关闭方收到信息后,发送一个类似收到的信息,完成四次挥手)
# 为什么是三次握手?不是两次或者四次? {#为什么是三次握手-不是两次或者四次?}
-
假如是两次握手,会发生什么情况呢? 服务端在发出应答消息后,它根本就不能确认客户端是否接受到消息了,那么这样意味着只有客户端可以向服务端发送数据。
-
假如是四次握手呢?明明已经保证了一个稳定的传输流了,为什么还要浪费性能再去发一次消息,浪费了性能。