Nginx学习笔记(一)——Nginx的简介
📚 Nginx学习笔记(一)——Nginx的简介
⚙️ 一、技术背景与演进
- C10K问题催生
- 2000年代初,传统服务器(如Apache)面临C10K问题(单机万级并发连接瓶颈)
- Nginx由俄罗斯工程师Igor Sysoev于2004年发布,采用事件驱动+非阻塞I/O架构
- 2023年全球Web服务器市场份额达33%(W3Techs数据),反向代理领域占比超80%
🔍 二、与传统服务器对比
维度 | Nginx | Apache HTTPD | Tomcat |
---|---|---|---|
并发模型 | 事件驱动(epoll/kqueue) | 进程/线程池(Prefork/Worker) | 线程池(Connector) |
内存消耗 | 极低(静态资源<5MB/万连接) | 高(进程模型内存线性增长) | 中等(依赖JVM堆) |
动态处理 | 需反向代理(如uWSGI/PHP-FPM) | 内置模块(mod_php) | 原生支持Java Servlet |
配置语法 | 声明式+模块化 | .htaccess文件 | XML配置文件 |
热部署 | ✅ 支持无缝重载 | 🔄 需重启进程 | 🔄 需重启容器 |
✅ 典型场景选择
- 静态资源/负载均衡:Nginx
- .htaccess动态配置:Apache
- Java EE应用:Tomcat+ Nginx前端代理
🚀 三、核心功能特性
-
高性能架构
worker_processes auto; # 自动匹配CPU核心数 events {worker_connections 10240; # 单Worker进程支持万级连接use epoll; # Linux高性能事件模型 }
- 单节点理论并发:支持10万+并发连接(实测2核4G服务器达8万QPS)
- 零拷贝技术:sendfile机制减少内核态-用户态数据拷贝
-
模块化设计
-
核心模块:http, stream(TCP/UDP代理), mail(邮件代理)
-
官方模块:
./configure --with-http_ssl_module # HTTPS支持--with-http_gzip_static_module # 预压缩静态文件--with-stream # 四层负载均衡
-
动态模块:支持运行时加载(Dynamically Loadable Modules)
-
-
关键功能矩阵
功能类别 实现方式 应用场景 静态服务 root/alias指令 前端资源分发 反向代理 proxy_pass + upstream 应用服务器集群暴露 负载均衡 轮询/权重/IP哈希/最少连接 流量调度 安全控制 limit_req/access_log DDoS防御/访问审计 内容处理 sub_filter/rewrite 响应内容替换/URL重写
💡 四、典型应用场景
-
Web服务栈核心层
-
微服务基础设施
-
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; }
-
-
现代架构集成
- Kubernetes Ingress Controller:如ingress-nginx
- Serverless入口:作为FaaS函数的前置代理
- WebSocket网关:
proxy_set_header Upgrade $http_upgrade
🌐 五、技术生态拓展
- 衍生版本
- OpenResty:集成LuaJIT,实现API网关逻辑编程
- Tengine(阿里定制版):增强动态模块加载、sysguard过载保护
- 性能监控工具链
- ngx_http_stub_status_module:内置基础监控
- Prometheus Exporter:实时采集QPS/连接数
- Dtrace动态追踪:分析请求处理链路耗时
此部分内容为后续学习奠定基础认知,后续章节将深入环境搭建与配置实战。建议结合Nginx官方文档(nginx.org/en/docs/)及《Nginx Cookbook》实践验证。