主题
Nginx技术栈总览
一句话定位:Nginx 是开源高性能 Web 服务器 + 反向代理服务器——靠事件驱动异步非阻塞 + master/worker 多进程扛起 5w 级并发,靠热部署平滑升级做到 7×24 不重启;三大用途:静态资源服务、反向代理(含缓存/负载均衡)、API 服务(OpenResty)。
核心特点
| 特点 | 说明 |
|---|---|
| 高并发高性能 | 事件驱动、异步非阻塞(类似 Node.js),单机可达 5w+ 并发连接 |
| 内存占用小 | 极省内存,是 Nginx 最核心的考量 |
| 模块化 | 扩展性好,大量第三方模块 |
| 热部署平滑升级 | 可数月不重启,升级版本不断服务 |
| 高可靠 | 连续运行几个月甚至更长不需重启 |
三大作用
- 静态资源服务:通过本地文件系统直接提供服务。
- 反向代理服务:延伸出缓存、负载均衡等能力。
- API 服务:OpenResty(Nginx + Lua)。
Nginx vs Node.js:理念类似(HTTP 服务器、事件驱动、异步非阻塞),但分工不同——Nginx 擅长底层资源处理(静态转发、反代、负载均衡),Node.js 擅长上层业务逻辑,二者常组合使用。
目录结构与启停命令
| 路径 | 作用 |
|---|---|
/etc/nginx/nginx.conf | 主配置文件(自动 include conf.d/*.conf) |
/etc/nginx/conf.d/ | 子配置项存放处 |
/usr/share/nginx/html/ | 静态资源目录 |
/var/log/nginx/ | 日志目录 |
bash
systemctl start|stop|restart|reload|status nginx # 启停/重启/重载/状态
nginx -s reload # 热重启(重载配置,不断服务)
nginx -s quit # 等 worker 处理完再关(优雅)
nginx -s stop # 快速关闭
nginx -t # 检查配置是否有问题
nginx -T # 查看最终生效配置配置文件层级(五段)
main → user / worker_processes(auto) / pid / worker_rlimit_nofile
events → use epoll / worker_connections(1024) / accept_mutex
http → log_format / sendfile / keepalive_timeout / include mime.types / include conf.d/*.conf
server → listen(80) / server_name / error_page
location → root / alias / index / deny / allow / proxy_pass
upstream → server ...(负载均衡后端)worker_processes auto:worker 进程数 = CPU 核数;worker_cpu_affinity可绑核避免缓存失效。worker_connections:单 worker 最大并发连接数(并发上限 ≈ worker_processes × worker_connections)。
常见误解
- 以为 Nginx 只能当 Web 服务器 → 它核心价值是反向代理 + 负载均衡 + 缓存,是网关层主角。
- 以为 Nginx 是 Tomcat 的替代品 → Tomcat 是 Servlet 容器(跑 Java 应用),Nginx 是网关/静态资源层,通常 Nginx 反代 Tomcat。
- 以为
nginx -s restart是热重启 → 热重载是reload(发信号重读配置);restart会中断服务。
关联
- 反代与负载均衡:概念卡片:Nginx反向代理与负载均衡
- 面试:面试题蒸馏卡:Nginx
- 网关全景:概念卡片:网关与负载均衡全景 · 概念卡片:Gateway网关