Nginx 入门知识

1 Nginx 与 Nginx 中的反向代理


Nginx 是一个高性能的 HTTP 和反向代理 web 服务器,具有正反向代理,负载均衡,HTTP 服务器等功能,以其高性能、稳定、功能丰富、配置简单及占用系统资源少而著称。

正向代理与反向代理的区别
在正向代理中,客户端是可以明确知道服务器地址的,客户端会把请求发送给代理,代理再把请求转发给服务器,那么响应的传递顺序也是服务器 -> 代理 -> 客户端,客户端知道服务器,而服务器不知道客户端,事实上隐藏了客户端的真实信息。与正向代理相反,反向代理隐藏的是服务器的真实信息。在反向代理中,客户端并不知道服务器,但它一定知道代理。只需要把请求发送给代理就行了,然后代理会根据一定的规则将请求转发给服务器,事实上,客户端并不知道它访问的是哪一台服务器。这样子就达到了隐藏服务器信息的目的。

2 Nginx 之负载均衡


除了反向代理,Nginx 的另外一个重要功能就是负载均衡了。是这样的,在一开始学习的时候,一般我们会把所有服务放在单台服务器上,但是随着业务量的逐渐增大,单台机器好像在稳定性或者高性能上都承受不住这个考验,那怎么办呢?那没办法啊,只能变集中式为分布式,加多几台服务器呗,日子还得过下去啊对不对。那现在问题来了,我们应该如何向这些服务器分发请求呢?

一台服务器在单位时间内受到的压力超过自身承受能力时,服务器就会崩溃,为避免服务器崩溃,给用户更好的体验,我们必须在客户端与服务器之间引入一个中间服务器,当用户访问时,中间服务器会在服务器中选择一个压力较小的服务器,然后将请求发送到这个压力小的服务器上,这就是负载均衡。在中间服务器的帮助下,在客户端的访问下保证了服务器集群中每个服务器的压力趋于平衡,避免出现服务器崩溃的情况。对于反向代理与负载均衡的关系,反向代理是负载均衡的基石,要达到负载均衡的目的,需要先有中间服务器来实现反向代理。

3 Nginx 的几种负载均衡方式

 

  • 轮询:默认方式,每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器挂掉,就会自动剔除。
  • 权重:指定轮询几率,权重与访问比率成正比,用于后端服务器性能不均的情况。
  • ip_hash:前面两种方式可能出现下一个请求来的时候请求可能分发到另外一个服务器的情况,如果我们需要一个客户端只访问一个服务器,可以选择 ip_hash 的方式,iphash 的每个请求都会按照访问 ip 的 hash 结果进行分配,这样可以保证每个客户端固定访问一个后端服务器。
  • fair:需要第三方模块,会按后端服务器的响应时间来分配请求,响应时间短的优先分配。
  • url_hash:需要第三方模块,会按访问 url 的 hash 结果来分配请求,使每个 url 定向到同一个后端服务器。


4 Nginx 之动静分离


在 web 开发中,一般来说,动态资源指的是那些后台资源,而静态资源就是指 html,css,js,img 等文件。

为了加快网站的解析速度,可以把动态资源和静态资源由不同的服务器来解析,从而加快解析速度。降低原来单个服务器的压力。我们可以将静态资源部署在 Nginx 上,当一个请求来的时候,如果是静态资源的请求,就直接到 Nginx 配置的静态资源目录下面获取资源,如果是动态资源的请求,Nginx 就会利用反向代理,把请求转发给后台应用去处理,从而实现动静分离。在使用前后端分离之后,可以很大程度提升静态资源的访问速度。

5 Nginx 的优势


我们为什么不选择别的 Web 服务器,比如 Apache 之类的呢,Nginx 相比于别的 Web 服务器,有什么优势呢?

  • 高扩展性:由多个不同功能、不同层次、不同类型且耦合度极高的模块组成,这种低耦合的设计,造就了它庞大的第三方模块
  • 高可靠性:每个 worker 进程相对独立,master 进程在某个 worker 进程出错时能迅速拉起新的 worker 进程
  • 低内存消耗:一般情况下10000个非活跃的keep-alive连接仅消耗2.5M的内存
  • 单机支持10万以上的并发连接,Nginx 支持的并发连接上限取决于内存,10万尚未封顶
  • 可以热部署
  • BSD许可协议
  • Nginx 的单次请求很快
     

你可能感兴趣的:(nginx)