nginx学习,看这一篇就够了:下载、安装。使用:正向代理、反向代理、负载均衡。常用命令和配置文件,很全-CSDN博客
Nginx 是高性能的 HTTP 和反向代理的web服务器,处理高并发能力是十分强大的,能经受高负 载的考验,有报告表明能支持高达 50,000 个并发连接数。
在这里,用通俗易懂的方式解释一下:
**正向代理**
我们平时需要访问国外的浏览器是不是很慢,比如我们要看推特,看GitHub等等。 我们直接用国内的服务器无法访问国外的服务器,或者是访问很慢。所以我们需要在**本地搭建一个 服务器**来帮助我们去访问。那这种就是正向代理。(浏览器中配置代理服务器)
**反向代理**
那什么是反向代理呢。比如:我们访问淘宝的时候,淘宝内部肯定不是只有一台服务 器,它的内部有很多台服务器,那我们进行访问的时候,因为服务器中间session不共享,那我们是 不是在服务器之间访问需要频繁登录,那这个时候淘宝搭建一个**过渡服务器**,对我们是没有任何 影响的,我们是登录一次,但是访问所有,这种情况就是 反向代理。对我们来说,客户端对代理是 无感知的,客户端不需要任何配置就可以访问,我们**只需要把请求发送给反向代理服务器,由反向 代理服务器去选择目标服务器获取数据后,再返回给客户端,**此时反向代理服务器和目标服务器对 外就是一个服务器,暴露的是代理服务器地址,隐藏了真实服务器的地址。(在服务器中配置代理服务器
## 特点
- - 高并发、高性能;
- - 模块化架构使得它的扩展性非常好;
- - 异步非阻塞的事件驱动模型这点和 Node.js 相似;
- - 相对于其它服务器来说它可以连续几个月甚至更长而不需要重启服务器使得它具有高可靠性;
- - 热部署、平滑升级;
- - 完全开源,生态繁荣;
### **HTTP服务器**
Nginx本身也是一个静态资源的[服务器] (https://cloud.tencent.com/act/pro/promotion-cvm?from_column=20065&from=20065), 当只有静态资源的时候,就可以使用Nginx来做服务器,如果一个网站只是静态页面的话,那么就可 以通过这种方式来实现部署。
### **静态服务器** 在公司中经常会遇到静态服务器,通常会提供一个上传的功能,其他应用如果需要静态资源就从该静 态服务器中获取。
### **反向代理** 反向代理应该是Nginx使用最多的功能了,反向代理(Reverse Proxy)方式是指以代理服务器来接受 internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给 internet上请求连接的客户端,此时代理服务器对外就表现为一个反向代理服务器。 简单来说就是真实的服务器不能直接被外部网络访问,所以需要一台代理服务器,而代理服务器能被 外部网络访问的同时又跟真实服务器在同一个网络环境,当然也可能是同一台服务器,端口不同而 已
反向代理通过`proxy_pass`指令来实现。
### **负载均衡**
[负载均衡](https://cloud.tencent.com/product/clb?from_column=20065&from=20065)也是 Nginx常用的一个功能,负载均衡其意思就是分摊到多个操作单元上进行执行,例如Web服务器、 FTP服务器、企业关键应用服务器和其它关键任务服务器等,从而共同完成工作任务。 简单而言就是当有2台或以上服务器时,根据规则随机的将请求分发到指定的服务器上处理,负载均 衡配置一般都需要同时配置反向代理,通过反向代理跳转到负载均衡。而Nginx目前支持自带3种负 载均衡策略,还有2种常用的第三方策略。 负载均衡通过upstream指令来实现。
##### **1. RR(round robin :轮询 默认)** 每个请求按时间顺序逐一分配到不同的后端服务器,也就是说第一次请求分配到第一台服务器上,第 二次请求分配到第二台服务器上,如果只有两台服务器,第三次请求继续分配到第一台上,这样循环 轮询下去,也就是服务器接收请求的比例是 1:1, 如果后端服务器down掉,能自动剔除。轮询是默 认配置,不需要太多的配置
##### **2. 权重** 指定轮询几率,weight和访问比率成正比, 也就是服务器接收请求的比例就是各自配置的weight的比 例,用于后端服务器性能不均的情况,比如服务器性能差点就少接收点请求,服务器性能好点就多处 理点请求。
##### **3. ip_hash** 上面的2种方式都有一个问题,那就是下一个请求来的时候请求可能分发到另外一个服务器,当我们 的程序不是无状态的时候(采用了session保存数据),这时候就有一个很大的很问题了,比如把登录 信息保存到了session中,那么跳转到另外一台服务器的时候就需要重新登录了,所以很多时候我们 需要一个客户只访问一个服务器,那么就需要用iphash了,iphash的每个请求按访问ip的hash结果 分配,这样每个访客固定访问一个后端服务器,可以解决session的问题。
### **五、动静分离** 动静分离是让动态网站里的动态网页根据一定规则把不变的资源和经常变的资源区分开来,动静资源 做好了拆分以后,我们就可以根据静态资源的特点将其做缓存操作,这就是网站静态化处理的核心思 路。