• Nginx知识点汇总


    1.什么是 Nginx?

       Nginx (engine x) 是一款轻量级的 Web 服务器 、反向代理服务器及电子邮件(IMAP/POP3)代理服务器。

     

    2. 什么是正向代理和反向代理?

    1. 正向代理就是一个人发送一个请求直接就到达了目标的服务器
    2. 反向代理(Reverse Proxy)就是请求统一被Nginx接收,nginx反向代理服务器接收到之后,按照一定的规则将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给 internet 上请求连接的客户端,此时代理服务器对外就表现为一个反向代理服务器。

     3. 为什么Nginx性能这么高?

      因为他的事件处理机制,异步非阻塞事件处理机制,运用了epoll模型,提供了一个队列,排队解决。

    4. Nginx的优缺点

      优点:

        1. 占内存小,可实现高并发连接,处理响应快。

         一般情况下,10000个非活跃的HTTP Keep-Alive连接在Nginx中仅消耗2.5MB的内存,这是Nginx支持高并发连接的基础。

        2. 可实现http服务器、虚拟主机、方向代理、负载均衡。

        3. Nginx配置简单。

        4. 反向代理功能可以不暴露正式的服务器IP地址,并可以节省IP资源。

        5. 支持热部署
         master管理进程与worker工作进程的分离设计,使得Nginx能够提供热部署功能,即可以在7×24小时不间断服务的前提下,升级Nginx的可执行文件。当然,它也支持不停止服务就更新配置项、更换日志文件等功能。

      缺点:

        动态处理差:nginx处理静态文件好,耗费内存少,但是处理动态页面则很弱,现在一般前端用nginx作为反向代理抗住压力。

    5. Nginx负载均衡策略及设置

      Nginx 提供了多种负载均衡策略。

      1. 轮询

        每个请求按时间顺序逐一分配到不同的后端服务器,如果后端某个服务器宕机,能自动剔除故障系统。

    upstream backserver {
      # 默认所有服务器权重为 1
      server 192.168.250.221:8080
      server 192.168.250.222:8080
      server 192.168.250.223:8080
    }

      2. 加权轮询

         每台后端服务器可以使用weight值来设置权重,可以根据每台服务器的处理能力来设置不同的权值,weight的值越大,承担的被分配的请求次数就越多,从而达到合理有效的地利用主机资源。

    upstream backserver {
      server 192.168.250.220:8080   weight=3
      server 192.168.250.221:8080              #  这里weight=1
      server 192.168.250.222:8080              #  这里weight=1
    }

      3. 最少连接

    upstream backserver {
      least_conn;
    
      # with default weight for all (weight=1)
      server 192.168.250.220:8080
      server 192.168.250.221:8080
      server 192.168.250.222:8080
    }

      4. 加权最少连接

    upstream backserver {
      least_conn;
    
      server 192.168.250.220:8080   weight=3
      server 192.168.250.221:8080              # weight=1
      server 192.168.250.222:8080              # weight=1
    }

      5. IP Hash

         每个请求按访问IP的哈希结果分配,使来自同一个IP的访客固定访问一台后端服务器,并且可以有效解决动态网页存在的session共享问题

    upstream backserver {
      ip_hash;
      # with default weight for all (weight=1)
      server 192.168.250.220:8080
      server 192.168.250.221:8080
      server 192.168.250.222:8080
    }

      6. 普通 Hash

    upstream backserver {
      hash $request_uri;
    
      # with default weight for all (weight=1)
      server 192.168.250.220:8080
      server 192.168.250.221:8080
      server 192.168.250.222:8080
    }

    6. 常用到的命令

      nginx -s stop :快速关闭Nginx,可能不保存相关信息,并迅速终止web服务。

      nginx -s quit: 平稳关闭Nginx,保存相关信息,有安排的结束web服务。

      nginx -s reload:因改变了Nginx相关配置,需要重新加载配置而重载。

      nginx -s reopen:重新打开日志文件。

      nginx -c filename:为 Nginx 指定一个配置文件,来代替缺省的。

      nginx -t:不运行,仅仅测试配置文件。nginx 将检查配置文件的语法的正确性,并尝试打开配置文件中所引用到的文件。

      nginx -v: 显示 nginx 的版本。

      nginx -V: 显示 nginx 的版本,编译器版本和配置参数。

     

    7. 什么是C10K问题?

      C10K概念最早由Dan KegelC10K提出的,C10K问题单台主机是指无法同时处理大量客户端(10000)的网络套接字。

  • 相关阅读:
    iOS
    iOS
    iOS
    iOS
    iOS
    iOS
    iOS
    iOS
    iOS
    【转】idea 用maven骨架生成项目速度慢的问题
  • 原文地址:https://www.cnblogs.com/songgj/p/10946825.html
Copyright © 2020-2023  润新知