如果你曾接触过Web开发、云计算或运维领域,一定听过 Nginx 这个名字。它是互联网世界中真正的“瑞士军刀”:既能作为轻量级Web服务器狂奔,也能化身负载均衡的中枢大脑。
1.Nginx的基石——高性能Web服务器
1.1 静态资源的“闪电侠”
如果你认为部署HTML/CSS等静态资源只能用Apache,那就太Out了!Nginx凭借 事件驱动(Event-Driven) 架构,单核即可轻松处理上万并发连接,无需为每个请求创建线程。例如,使用以下配置即可托管静态网站:
server {
listen 80;
root /var/www/html;
index index.html;
# 开启Gzip压缩(性能提升关键!)
gzip on;
gzip_types text/plain application/css image/png;
# 缓存设置:静态资源30天过期
location ~* \.(jpg|jpeg|png|css|js)$ {
expires 30d;
add_header Cache-Control "public";
}
}
1.2 动静分离:解放后端服务器的压力
动态应用(如PHP、Java)和静态资源分离是性能优化的黄金法则。Nginx的 location
指令能精准拦截请求类型:
location /static/ {
root /data;
expires 1d; # 静态资源缓存1天
}
location / {
proxy_pass http://backend_server; # 动态请求转发到Tomcat或Node.js
}
2.颠覆想象的负载均衡与高可用
2.1 4种负载策略深度解析
Nginx支持灵活的负载均衡算法,满足不同业务场景:
- Round Robin(默认轮询):平均分配请求。
- Least Connections(最少连接):优先发给负载最轻的节点。
- IP Hash:确保同一客户端始终访问同一后端(Session保持)。
- 自定义权重(Weighted):手动分配流量比例。
配置示例:
upstream backend {
least_conn; # 最少连接策略
server 10.0.0.1 weight=3; # 权重3,处理更多请求
server 10.0.0.2;
server 10.0.0.3 backup; # 备用节点(仅当主节点宕机时启用)
}
server {
location / {
proxy_pass http://backend;
}
}
2.2 熔断与健康检查:系统的“免疫系统”
- 被动健康监测:通过错误率自动剔除故障节点。
upstream app_servers {
server 10.0.1.1 max_fails=3 fail_timeout=30s;
# 3次失败后暂停30秒
}
- 主动健康监测(Nginx Plus或开源模块):周期性探针检查节点状态。
# Nginx Plus专属功能
health_check uri=/health_check interval=5s;
3.解锁高级玩法——不止于Web服务器
3.1 反向代理:隐形的安全屏障
当Nginx作为反向代理时,隐藏后端服务器细节,并实现安全增强:
server {
listen 443 ssl;
ssl_certificate /path/to/cert.pem;
ssl_certificate_key /path/to/key.pem;
location / {
proxy_pass http://internal_app:8080;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr; # 传递真实客户端IP
}
}
3.2 SSL终结者:集中管理加密流量
Nginx可以统一处理HTTPS加密解密,后端服务无需消耗资源:
# SSL配置示例(支持HTTP/2!)
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers EECDH+AESGCM:EDH+AESGCM;
ssl_prefer_server_ciphers on;
3.3 缓存加速:让动态内容也能飞起来
针对频繁访问的动态内容(如API响应),开启缓存大幅提升性能:
proxy_cache_path /var/cache/nginx levels=1:2 keys_zone=my_cache:10m;
server {
location /api/ {
proxy_cache my_cache;
proxy_pass http://api_backend;
proxy_cache_valid 200 5m; # 缓存200响应5分钟
add_header X-Cache-Status $upstream_cache_status;
}
}
4.Nginx的“极客模式”
4.1 作为邮件代理服务器
你以为Nginx只能处理HTTP?它甚至能代理IMAP、POP3、SMTP协议:
mail {
server_name mail.example.com;
auth_http localhost:9000/auth; # 自定义认证服务
imap_capabilities IMAP4rev1;
pop3_capabilities TOP USER;
server {
listen imap://:143;
protocol imap;
}
}
4.2 流媒体服务器:直播与点播的幕后推手
借助 nginx-rtmp-module
模块,Nginx可直接处理视频流:
rtmp {
server {
listen 1935;
application live {
live on;
record off; # 禁用录制
# 推流地址:rtmp://server/live/stream_key
}
}
}