Nginx:简单如斯,千字足矣

简介: 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热部署机制提供了支撑。
目录
相关文章
|
1月前
|
负载均衡 网络协议 关系型数据库
一口把LVS、Nginx及HAProxy工作原理讲清楚了。(附图)
一口把LVS、Nginx及HAProxy工作原理讲清楚了。(附图)
|
3月前
|
前端开发 应用服务中间件 程序员
老程序员分享:Nginx相关面试题
老程序员分享:Nginx相关面试题
36 2
|
10月前
|
域名解析 负载均衡 网络协议
Nginx系列教程(完) -终章总结
Nginx系列教程(完) -终章总结
60 0
|
9月前
|
负载均衡 网络协议 应用服务中间件
当当网266买来的1399页Nginx笔记,原来我入门都不算
Nginx (engine x) 是一个高性能的HTTP和反向代理web服务器,同时也提供了IMAP/POP3/SMTP服务。Nginx是由伊戈尔·赛索耶夫为俄罗斯访问量第二的Rambler.ru站点(俄文:Рамблер)开发的,第一个公开版本0.1.0发布于2004年10月4日。
当当网266买来的1399页Nginx笔记,原来我入门都不算
|
9月前
|
监控 应用服务中间件 调度
Nginx为什么快到根本停不下来?
Nginx为什么快到根本停不下来?
221 0
|
监控 应用服务中间件 调度
Nginx为什么能快到根本停不下来?
Nginx 以其高性能,稳定性,丰富的功能,简单的配置和低资源消耗而闻名。本文从底层原理分析 Nginx 为什么这么快!
|
缓存 负载均衡 监控
Nginx: 挂了怎么办?热部署了解吗?什么是鲸群效应?Nginx你不知道的那些事一
Nginx: 挂了怎么办?热部署了解吗?什么是鲸群效应?Nginx你不知道的那些事一
|
缓存 前端开发 JavaScript
Nginx - 学相伴 (做项目连夜学)
过两天要去XX公司外包做项目了,需求里有个没学过的,NGINX,淦 连夜看一看,顺口提一下,某音跟监听我说话似的,刚跟小姐姐聊了一下nginx,回家刷视频就给我推荐了nginx的视频,你说它牛逼吧,确实牛逼,但我这心里有点忐忐忑忑…
202 0
Nginx - 学相伴 (做项目连夜学)
|
负载均衡 应用服务中间件 nginx
Nginx学习笔记(一)6张图带你看清Nginx是啥玩意儿
Nginx学习笔记(一)6张图带你看清Nginx是啥玩意儿
Nginx学习笔记(一)6张图带你看清Nginx是啥玩意儿
|
域名解析 缓存 算法
Nginx 面试 40 连问,快顶不住了~~(二)
Nginx 面试 40 连问,快顶不住了~~(二)
Nginx 面试 40 连问,快顶不住了~~(二)