当前位置: 首页 > news >正文

将Nginx 核心知识点扒了个底朝天(一)

什么是Nginx?

Nginx是一个 轻量级/高性能的反向代理Web服务器,用于 HTTP、HTTPS、SMTP、POP3 和 IMAP 协议。他实现非常高效的反向代理、负载平衡,他可以处理2-3万并发连接数,官方监测能支持5万并发,现在中国使用nginx网站用户有很多,例如:新浪、网易、 腾讯等。

Nginx 有哪些优点?

  • 跨平台、配置简单。

  • 非阻塞、高并发连接:处理 2-3 万并发连接数,官方监测能支持 5 万并发。

  • 内存消耗小:开启 10 个 Nginx 才占 150M 内存。

  • 成本低廉,且开源。

  • 稳定性高,宕机的概率非常小。

  • 内置的健康检查功能:如果有一个服务器宕机,会做一个健康检查,再发送的请求就不会发送到宕机的服务器了。重新将请求提交到其他的节点上

Nginx应用场景?

  • http服务器。Nginx是一个http服务可以独立提供http服务。可以做网页静态服务器。

  • 虚拟主机。可以实现在一台服务器虚拟出多个网站,例如个人网站使用的虚拟机。

  • 反向代理,负载均衡。当网站的访问量达到一定程度后,单台服务器不能满足用户的请求时,需要用多台服务器集群可以使用nginx做反向代理。并且多台服务器可以平均分担负载,不会应为某台服务器负载高宕机而某台服务器闲置的情况。

  • nginz 中也可以配置安全管理、比如可以使用Nginx搭建API接口网关,对每个接口服务进行拦截。

  • 彻底搞懂 Nginx 五大应用场景!出去吹牛逼再也不担心了

Nginx怎么处理请求的?

server {                                    # 第一个Server区块开始,表示一个独立的虚拟主机站点listen       80;                          # 提供服务的端口,默认80server_name  localhost;                    # 提供服务的域名主机名location / {                               # 第一个location区块开始root   html;                           # 站点的根目录,相当于Nginx的安装目录index  index.html index.html;          # 默认的首页文件,多个用空格分开}                                          # 第一个location区块结果
  • 首先,Nginx 在启动时,会解析配置文件,得到需要监听的端口与 IP 地址,然后在 Nginx 的 Master 进程里面先初始化好这个监控的Socket(创建 S ocket,设置 addr、reuse 等选项,绑定到指定的 ip 地址端口,再 listen 监听)。

  • 然后,再 fork(一个现有进程可以调用 fork 函数创建一个新进程。由 fork 创建的新进程被称为子进程 )出多个子进程出来。

  • 之后,子进程会竞争 accept 新的连接。此时,客户端就可以向 nginx 发起连接了。当客户端与nginx进行三次握手,与 nginx 建立好一个连接后。此时,某一个子进程会 accept 成功,得到这个建立好的连接的 Socket ,然后创建 nginx 对连接的封装,即 ngx_connection_t 结构体。

  • 接着,设置读写事件处理函数,并添加读写事件来与客户端进行数据的交换。

  • 最后,Nginx 或客户端来主动关掉连接,到此,一个连接就寿终正寝了。

 

http://www.lryc.cn/news/11745.html

相关文章:

  • SSM项目搭建保姆级教程
  • LeetCode 350. 两个数组的交集 II
  • Python可以解码吗,解码打码是如何实现的
  • Jackson 序列化:Cannot deserialize value of type `java.time.LocalDateTime`
  • 机试_3_数据结构(一)_习题
  • 《Hadoop篇》------HDFS与MapReduce
  • 网络爬虫简介
  • 通过4个月的自动化学习,现在我也拿到了25K的offer
  • 分库分表了解
  • docker中 gitlab 安装、配置和初始化
  • 有哪些好用的C++Json库?
  • Docker 快速上手学习入门教程
  • 深度学习笔记:误差反向传播(1)
  • 锁相环(1)
  • 2023金三银四跳槽必会Java核心知识点笔记整理
  • 二十四节气—雨水,好雨知时节,当春乃发生。
  • 为什么要使用数据库?
  • 【原创】java+swing+mysql图书管理系统设计与实现
  • 图论 —— 强连通分量
  • 计算机网络(二):物理层和链路层,通道复用,MAC地址,CSMA/CD协议,PPP点对点协议
  • 英语基础-定语从句的特殊用法及写作应用
  • [数据结构]---八大经典排序算法详解
  • Go语言设计与实现 -- 反射
  • 利用5G工业网关实现工业数字化的工业互联网解决方案
  • 朋友当上项目测试组长了,我真的羡慕了
  • element-ui实现动态添加表单项并实现事件触发验证验证
  • ThreadLocal 内存泄漏问题
  • 【算法】两道算法题根据提供字母解决解码方法和城市的天际线天际线问题
  • Python-TCP网络编程基础以及客户端程序开发
  • 超低成本DDoS攻击来袭,看WAF如何绝地防护