Nginx原理简述

Nginx原理简述Nginx 原理简介 1 nginx 的作用反向代理 隐藏服务器的地址 负载均衡 轮询 权重 ip hash 动静分离 nginx 作为静态资源服务器 对 nginx 的主要操作都是在改配置文件 2 nginx 原理 nginx 是以进程为单位的 这里是进程不是线程 每个进程有自己独立的资源 不用再像线程一样加锁了 如果你刚下载好了 nginx 你启动之后 打开任务管理器看一下有几个 nginx 进程 如果不出意外 它会有两个 nginx 进程 为什么会有两个进程呢 原理解析 nginx 里面 有两

Nginx原理简介

1. nginx的作用

  • 反向代理(隐藏服务器的地址)
  • 负载均衡(轮询、权重、ip_hash)
  • 动静分离(nginx作为静态资源服务器)

    对nginx的主要操作都是在改配置文件。

2.nginx原理

nginx是以进程为单位的,这里是进程不是线程。每个进程有自己独立的资源,不用再像线程一样加锁了。

如果你刚下载好了nginx,你启动之后,打开任务管理器看一下有几个nginx进程,如果不出意外,它会有两个nginx进程。

为什么会有两个进程呢?

原理解析
nginx里面,有两种进程,一个是master进程,还有一个是worker进程。这个master进程,当有请求进来时,它会通知worker进程来处理这个请求。当有多个worker进程时(worker的数量取决于配置文件中work_process的值,默认为1)就会来争抢,一个请求只会被一个worker进程处理。

worker进程中只有一个主线程,主线程通过异步非阻塞的方式来处理拿到的请求,这个异步非阻塞可以理解为做循环不停的处理各种请求。这里的工作方式是这个主线程不停的在不同请求之间来回切换,这种切换不是不同线程之间的上下文切换,基本不损耗什么资源。这也是为什么nginx能够高并发的处理请求的关键原因。

多线程的上下文切换:当CPU不再执行当前线程,切换到另一个线程时,需要保存当前线程的信息,如计数器、虚拟机栈中各个栈帧的信息,并且还要读取另一个线程的这些东西,势必会影响效率。

有关worker进程中具体的处理方式,暂未了解,后续将会更进。

更新于2020.8.17晚

上述有关worker进程中处理多个连接请求的地方说的不是很好,worker进程采用多路复用的IO模型epoll,才使得一个进程能够处理大量的请求,至于它怎么实现的,底层原理是什么,这涉及到IO模型以及Linux的用户态和内核态的相关知识,目前我也不是很清楚。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/233155.html原文链接:https://javaforall.net

(0)
上一篇 2025年8月11日 下午1:01
下一篇 2025年8月11日 下午1:22


相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号