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

Nginx - 相关概念解释及整体结构

概述

  1. 定义
    1. 一个高性能的 HTTP 和反向代理服务器
    2. 一个 IMAP/POP3/SMTP 代理服务器
  2. 目标:高效处理高并发连接
  3. 安装流程:Installing nginx

功能

功能说明
⭐ 反向代理作为反向代理服务器,将客户端请求转发到一个或多个后端服务器
负载均衡通过多种负载均衡算法(如轮询、最少连接等)分发请求
HTTP 缓存缓存后端服务器的响应,提高响应速度并减轻后端服务器的压力
静态内容服务高效地提供静态文件(如 HTML、CSS、JavaScript、图片等)的服务
SSL/TLS 加密支持 SSL/TLS,加密客户端和服务器之间的通信,提高安全性
邮件代理服务作为邮件代理(IMAP、POP3、SMTP)服务器
URL 重写和重定向提供灵活的 URL 重写和重定向功能,用于优化 URL 结构和管理请求路由
FastCGI、uWSGI、gRPC 支持支持与 FastCGI、uWSGI 和 gRPC 服务通信,常用于与 PHP、Python 和其他动态内容生成的应用服务器集成
流控 & 限流
访问控制和认证

常用命令

命令功能说明
nginx -s quit正常停止优雅退出
nginx -s stop立即停止强制退出
nginx -s reload重新加载配置文件热重载配置
nginx -s reopen重新打开日志文件日志切割
nginx -t检查配置文件验证配置有效性
nginx -p /path/to/virtual_host_file启动特定虚拟主机指定虚拟主机配置

结构

  1. 组成:一个主进程 + 多个工作进程

一、主进程(Master Process)

  1. 功能
    1. 读取和评估配置文件
    2. 管理和维护工作进程(Worker Processes)
    3. 接受并响应操作系统的信号(如重启、重新加载配置等)

二、工作进程(Worker Processes)

  1. 功能:实际处理客户端请求
  2. 数量:在配置文件中定义,可以针对给定的配置进行固定,也可以根据可用的 CPU 内核数量自动调整
  3. 进程独立:每个工作进程是独立的,相互之间没有共享状态,这样可以最大限度地提高稳定性和并发处理能力

三、事件驱动模型

  1. 定义:异步、非阻塞的事件驱动架构,依赖于操作系统提供的高效事件通知机制(如 epoll、kqueue 等)
  2. 功能:允许 Nginx 在处理高并发连接时保持高效

特点

  1. 高可靠性:独立的工作进程设计,某个工作进程出问题不会影响整个服务器的运行
  2. 资源消耗低:内存和 CPU 使用率低(10000 个非活跃的 HTTP Keep-Alive 连接在 Nginx 中仅消耗 2.5MB 的内存)
  3. 处理响应请求快 :基于事件驱动的架构,Nginx 可以比其它的 Web 服务器更快的响应请求
  4. 支持高并发连接 :基于事件驱动的架构,能够并发处理百万级别的 TCP 连接
  5. 高扩展性:高度模块化的设计和自由的许可证使得用于扩展 Nginx 功能的第三方模块十分庞大
  6. 热部署:master 管理进程与 worker 工作进程的分离设计,保证 Nginx 可以在不间断服务的前提下,升级 Nginx 的可执行文件
  7. 自由的 BSD 许可协议:允许用户免费使用 Nginx,也允许用户修改 Nginx 源码,还允许用户用于商业用途
  8. 跨平台:Linux ↔ Windows


http://www.kler.cn/a/442187.html

相关文章:

  • java图像文件的显示
  • C#中无法在串口serialPort1_DataReceived启动定时器的解决方法
  • PyBroker:利用 Python 和机器学习助力算法交易
  • 2025.1.15——四、布尔注入
  • 迅为RK3576开发板Android 多屏显示
  • 【无法下载github文件】虚拟机下ubuntu无法拉取github文件
  • SAST静态应用安全测试常见的编码规则
  • 医学图像之图像分割数据集视神经青光眼分割数据集labelme格式903张2类别
  • 【如何获取股票数据15】Python、Java等多种主流语言实例演示获取股票行情api接口之沪深A股所属指数数据获取实例演示及接口API说明文档
  • C++如何实现对象的克隆?如何实现单例模式?
  • 解决MyBatis在 Oracle 中使用 IN 语句不能超过 1000 问题
  • linux 无网络安装mysql
  • 一般行业安全管理人员考试题库分享
  • OpenAI API深度解析:参数、Token、计费与多种调用方式
  • 什么是nuxt.js,有什么特点
  • Vue2二、指令补充,computed 计算属性vs方法,watch 侦听器,
  • 了解 JVM 运行原理,掌握常见的内存模型以及性能调优的基本方法
  • 【Qt】按钮类控件:QPushButton、QRadioButton、QCheckBox、ToolButton
  • Kioptrix靶场渗透--level1.1
  • 每日一题 331. 验证二叉树的前序序列化
  • Excel中如何消除“长短款”
  • 【服务器】服务器进程运行不受本地终端影响的方法总结
  • 【AIGC安全】CCF-CV企业交流会直播回顾:探寻AI安全治理,共筑可信AI未来
  • MySQL 实战:小型项目中的数据库应用(一)
  • springcloud-gateway获取应用响应信息乱码
  • CSS系列(14)--后处理器详解