Nginx:简单如斯,千字足矣

举报
莫逸风 发表于 2022/07/20 12:59:21 2022/07/20
【摘要】 Nginx:简单如斯,千字足矣
  1. Nginx是什么?

    Nginx是一个高性能的HTTP和反向代理web服务器,核心特点是占有内存少,并发能力强。

  2. Nginx的应用场景?

    1. Http服务器(web服务器)

      性能非常高,非常注重效率,能够经受高负载的考验。

      支持50000个并发连接数,不仅如此,CPU和内存的占用也非常低,10000个没有活动的连接才占用2.5M的内存。

    2. 反向代理服务器

      1. 正向代理

        在浏览器中配置代理服务器的相关信息,通过代理服务器访问目标网站,代理服务器收到响应后,会把相应信息返回给我们自己的浏览器客户端。

      2. 反向代理

        浏览器客户端发送请求到反向代理服务器(比如Nginx),由反向代理服务器选择最终服务器提供服务获取响应结果。

    3. 负载均衡服务器

      当一个请求到达,Nginx反向代理服务器去寻找原始服务器提供服务的过程叫做反向代理。但是当原始服务器有多台的时候,找哪一台服务器提供服务,这样一个寻找的过程就叫做负载均衡。

      upstream配置在http里面server外面

      默认轮询

      upstream myfServer{
          server 111.229.248.243:8080;
          server 111.229.248.243:8082;
      }
      location /abc {
          proxy_pass http://myfServer/;
      }
      

      weight权重

      upstream myfServer{
          server 111.229.248.243:8080 weight=1;
          server 111.229.248.243:8082 weight=2;
      }
      

      ip_hash

      upstream myfServer{
          ip_hash;
          server 111.229.248.243:8080;
          server 111.229.248.243:8082;
      }
      
    4. 动静分离

      location /static{
          root /Users/zgx/CodeFile/;
          index index.html;
      }
      

      上面的真实访问路径是/Users/zgx/CodeFile/static/index.html 会有一个static加到文件路径中

      location /static{
          alias /Users/zgx/CodeFile/static/;
          index index.html;
      }
      

      使用alias不使用root,真实访问路径/Users/zgx/CodeFile/static/index.html

  3. Nginx特点

    1. 跨平台:Nginx可以在大多数类Unix操作系统上编译运行,而且也有Windows版本。
    2. Nginx的上手非常容易,配置也比较简单。
    3. 高并发,性能好。
    4. 稳定性也特别好,宕机概率很低
  4. Nginx安装(看文档)

  5. Nginx主要命令

    1. ./nginx 启动Nginx
    2. ./nginx -s stop 终止Nginx(也可以使用kill -9杀掉Nginx进程)
    3. ./nginx -s reload 重新加载Nginx.conf配置文件
  6. Nginx核心配置文件解读

    Nginx的核心配置文件conf/nginx.cong包含三块内容:全局块、events块、http块

    1. 全局块

      从配置文件开始到events块之间的内容,此处的配置影响Nginx服务器整体的运行,比如worker进程的数量、错误日志的位置等。

    2. events块

      events块主要影响nginx服务器与⽤户的⽹络连接,⽐如worker_connections 1024,标识每个workderprocess⽀持的最⼤连接数为1024

    3. http块

      http块是配置最频繁的部分,虚拟主机的配置,监听端⼝的配置,请求转发、反向代理、负载均衡等

  7. Nginx底层进程机制剖析

    Nginx启动后,以daemon(关掉shell后不关闭)多进程方式在后台运行,包括一个Master进程和多个Worker进程。

    • master进程

      主要管理worker进程

      • 接收外界信号和向各worker进程发送信号(./nginx -s reload)。
      • 监控worker进程状态,当worker进程异常退出后Master进程会自动重新启动新的worker进程。
    • worker进程

      worker进程具体处理网络请求。多个worker进程之间是对等的。他们同等竞争来自客户端的请求,各进程之间是相互独立的。

    • 以./nginx -s reload来说明Nginx信号处理这部分

      • -s代表发出一个信号,内容为reload。
      • master进程对配置文件进行语法检查。
      • 尝试根据配置文件进行配置。
      • 尝试成功则使用新的配置,新建worker进程。
      • 新建成功,给旧的worker进程发送关闭消息。
      • 旧的worker进程收到信号会继续服务,直到把当前进程接收到的请求处理完毕后关闭。
    • worker进程处理请求部分说明

      例如我们监听9003端口,一个请求到来,如果有多个进程,那么每个worker进程都有可能处理这个链接。

      • master进程创建之后,会建好需要监听的socket,然后再从master进程再fork出多个worker进程。所以,所有的worker进程的监听描述符listenfd 在新连接到来时变的可读。
      • Nginx使用互斥锁来保证只有一个worker进程能够处理请求,拿到互斥锁的进程注册listenfd读事件,在读事件里调用accept接收该连接,然后解析、处理、返回客户端。
    • Nginx多进程模型的好处

      • 每个worker进程都是独立的,不需要加锁,节省开销。
      • 每个worker进程都是独立的,互不影响,一个进程异常,其他进程依旧可以提供服务。
      • 多进程模型为reload热部署机制提供了支撑。
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。