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

Nginx学习笔记(一)——Nginx的简介

📚 Nginx学习笔记(一)——Nginx的简介

⚙️ 一、技术背景与演进
  1. C10K问题催生
    • 2000年代初,传统服务器(如Apache)面临C10K问题(单机万级并发连接瓶颈)
    • Nginx由俄罗斯工程师Igor Sysoev于2004年发布,采用事件驱动+非阻塞I/O架构
    • 2023年全球Web服务器市场份额达33%(W3Techs数据),反向代理领域占比超80%
🔍 二、与传统服务器对比
维度NginxApache HTTPDTomcat
并发模型事件驱动(epoll/kqueue)进程/线程池(Prefork/Worker)线程池(Connector)
内存消耗极低(静态资源<5MB/万连接)高(进程模型内存线性增长)中等(依赖JVM堆)
动态处理需反向代理(如uWSGI/PHP-FPM)内置模块(mod_php)原生支持Java Servlet
配置语法声明式+模块化.htaccess文件XML配置文件
热部署✅ 支持无缝重载🔄 需重启进程🔄 需重启容器

典型场景选择

  • 静态资源/负载均衡:Nginx
  • .htaccess动态配置:Apache
  • Java EE应用:Tomcat+ Nginx前端代理
🚀 三、核心功能特性
  1. 高性能架构

    worker_processes auto;  # 自动匹配CPU核心数
    events {worker_connections 10240;  # 单Worker进程支持万级连接use epoll;               # Linux高性能事件模型
    }
    
    • 单节点理论并发:支持10万+并发连接(实测2核4G服务器达8万QPS)
    • 零拷贝技术:sendfile机制减少内核态-用户态数据拷贝
  2. 模块化设计

    • 核心模块:http, stream(TCP/UDP代理), mail(邮件代理)

    • 官方模块:

      ./configure --with-http_ssl_module        # HTTPS支持--with-http_gzip_static_module # 预压缩静态文件--with-stream                # 四层负载均衡
      
    • 动态模块:支持运行时加载(Dynamically Loadable Modules)

  3. 关键功能矩阵

    功能类别实现方式应用场景
    静态服务root/alias指令前端资源分发
    反向代理proxy_pass + upstream应用服务器集群暴露
    负载均衡轮询/权重/IP哈希/最少连接流量调度
    安全控制limit_req/access_logDDoS防御/访问审计
    内容处理sub_filter/rewrite响应内容替换/URL重写
💡 四、典型应用场景
  1. Web服务栈核心层

    静态请求
    动态请求
    客户端
    Nginx边缘节点
    路由决策
    Nginx本地缓存
    Upstream: App集群
    Tomcat/Django/Node.js
    CDN回源服务器
  2. 微服务基础设施

    • API网关:基于location路由到不同服务

      location /user-service/ {proxy_pass http://user-cluster/;
      }
      location /order-service/ {proxy_pass http://order-cluster/;
      }
      
    • 灰度发布:通过map指令实现流量切分

      map $cookie_gray $backend {default   production-backend;"true"    gray-backend;
      }
      
  3. 现代架构集成

    • Kubernetes Ingress Controller:如ingress-nginx
    • Serverless入口:作为FaaS函数的前置代理
    • WebSocket网关proxy_set_header Upgrade $http_upgrade
🌐 五、技术生态拓展
  1. 衍生版本
    • OpenResty:集成LuaJIT,实现API网关逻辑编程
    • Tengine(阿里定制版):增强动态模块加载、sysguard过载保护
  2. 性能监控工具链
    • ngx_http_stub_status_module:内置基础监控
    • Prometheus Exporter:实时采集QPS/连接数
    • Dtrace动态追踪:分析请求处理链路耗时

此部分内容为后续学习奠定基础认知,后续章节将深入环境搭建与配置实战。建议结合Nginx官方文档(nginx.org/en/docs/)及《Nginx Cookbook》实践验证。

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

相关文章:

  • docker部署elasticsearch-8.11.1
  • 【自动化运维神器Ansible】playbook setup模块深度解析:自动收集系统信息与变量应用
  • 实习学习记录
  • Linux系统编程Day12 -- 环境变量(初识)
  • 从预警到干预:ADAS系统如何通过BSD, FCW, AEB等功能保护你?
  • Pyecharts绘制折线图全解析
  • 区间修改 - 差分
  • 大模型中的反向传播是什么
  • 网络编程~
  • 【13-向量化-高效计算】
  • 《番外:Veda的备份,在某个未联网的旧服务器中苏醒……》
  • 飞算 JavaAI 智能进阶:从技术工具到金融科技开发范式的革新
  • 文件操作:fgets与gets区别+fread/fwrite +流定位接口
  • 【图像处理基石】PCA图像压缩与还原:基于OpenCV的Lena图实验
  • 2025 算法面试试题-阿里面试题分析
  • 【算法专题训练】11、字符串中的变位词
  • PyTorch基础(使用Tensor及Antograd实现机器学习)
  • GraalVM !拥抱云原生的 JVM
  • foreach 块并行加速
  • docker compose和docker-compose命令的区别
  • 力扣164:最大间距
  • 大数据系统架构模式:驾驭海量数据的工程范式
  • React(四):事件总线、setState的细节、PureComponent、ref
  • LeetCode 2438.二的幂数组中查询范围内的乘积:模拟(前缀和可选)
  • C++项目实战(日期类的实现)
  • MFC C++ 使用ODBC方式调用Oracle数据库的详细步骤
  • 重学React(五):脱围机制一
  • 金蝶云星辰:赋能企业数据管理
  • spring boot 整合redis教程
  • 带简易后台管理的米表系统 域名出售系统 自适应页面