Nginx 详解
📌 一、什么是 Nginx?
✅ Nginx(engine x)是一个 高性能、高并发、轻量级 的 Web 服务器 和 反向代理服务器
✅ 同时支持:HTTP 服务器、反向代理、负载均衡、缓存、动静分离等功能
典型应用场景:
- 网站服务器(如静态页面、图片、视频服务)
- 反向代理(隐藏真实服务器)
- 负载均衡(分发请求)
- 接口限流、黑白名单
- HTTPS 终端、SSL卸载
📌 二、Nginx 核心模块组成
模块 | 作用 |
---|---|
http | 处理 HTTP 请求,支持反向代理、缓存、访问控制等 |
server | 定义虚拟主机,监听端口和域名 |
location | 匹配具体请求路径,做转发、代理或直接返回 |
upstream | 配置后端服务器集群,实现负载均衡 |
events | 控制连接数、IO模型(epoll/kqueue)等性能参数 |
📌 三、核心配置结构(实战级)
worker_processes 4; # 工作进程数(CPU核数)
events {
worker_connections 1024; # 每个进程最大连接数
}
http {
include mime.types;
default_type application/octet-stream;
upstream backend {
server 127.0.0.1:8081 weight=3;
server 127.0.0.1:8082;
}
server {
listen 80;
server_name www.example.com;
location /static/ {
root /var/www/html;
}
location /api/ {
proxy_pass http://backend;
}
}
}
📌 四、反向代理(经典)
location / {
proxy_pass http://127.0.0.1:8080;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
✅ 作用:客户端请求先到 Nginx,由 Nginx 转发给后端服务器
📌 五、负载均衡策略(面试重点)
upstream backend {
server 192.168.1.10 weight=3;
server 192.168.1.11 weight=1;
}
支持算法:
算法 | 作用 |
---|---|
轮询(默认) | 顺序分配请求 |
weight 权重 | 权重大者分配多 |
ip_hash | 同一IP固定访问同一后端 |
least_conn | 连接数最少的优先 |
📌 六、动静分离(高性能优化)
location ~* .(jpg|png|css|js|ico)$ {
root /usr/share/nginx/html/static;
expires 30d; # 强缓存
}
location / {
proxy_pass http://backend;
}
✅ 静态资源 Nginx 直接返回,动态请求转发后端,减轻服务器压力
📌 七、Nginx 限流/防刷(实战超经典)
limit_req_zone $binary_remote_addr zone=limitZone:10m rate=10r/s;
server {
location /api/ {
limit_req zone=limitZone burst=5 nodelay;
proxy_pass http://backend;
}
}
✅ 限流效果:同一 IP 每秒最多 10 个请求,超出进入排队
📌 八、Nginx 支持 HTTPS(SSL配置)
server {
listen 443 ssl;
server_name www.example.com;
ssl_certificate /etc/nginx/ssl/cert.pem;
ssl_certificate_key /etc/nginx/ssl/cert.key;
location / {
proxy_pass http://backend;
}
}
✅ 作用:
- 数据加密传输
- 防止中间人攻击
- 配置简单,性能好
📌 九、Nginx 热部署 & 日志
nginx -s reload # 热加载配置
nginx -s stop # 停止Nginx
# 日志路径
access_log logs/access.log;
error_log logs/error.log;
📌 🔥 十、面试必问核心总结
知识点 | 快速回答 |
---|---|
Nginx 为什么高性能? | IO 多路复用(epoll),异步非阻塞,单线程高并发 |
负载均衡策略有哪些? | 轮询、权重、ip_hash、least_conn |
动静分离怎么做? | 静态资源 Nginx 直接处理,动态交后端 |
Nginx 限流怎么做? | limit_req 限 IP 请求速率 |
Nginx 怎么实现 HTTPS? | ssl_certificate、ssl_certificate_key |
📌 十一、Nginx 应用场景总结
✅ 网站服务器(部署静态文件)
✅ 网关(API 反向代理、接口聚合)
✅ 负载均衡(高并发转发、后端集群)
✅ 安全防护(限流、防刷、IP 过滤)
✅ 图片/视频 CDN 服务器
✅ 接入 HTTPS,安全加密传输
📌 十二、总结一句话:
Nginx = 高性能反向代理 + 负载均衡 + 静态服务器 + 安全防护神器,互联网架构必备!