Nginx代理技术全景图
Nginx代理
基础反向代理
负载均衡
缓存加速
安全防护
高级功能
请求转发
头部重写
连接池
轮询策略
权重分配
会话保持
静态缓存
动态缓存
边缘缓存
WAF规则
速率限制
地理封锁
WebSocket
SSL卸载
动态路由
代理类型深度对比特性 基础反向代理 负载均衡 缓存代理 最佳适用场景 核心功能 请求转发 流量分配 内容缓存 缓存代理:高重复请求 性能影响 中 高 极高 负载均衡:高并发系统 配置复杂度 ★★☆☆☆ ★★★☆☆ ★★★★☆ 基础代理:简单转发 资源消耗 低 中 高(内存) 按需求选择 典型延迟 5-50ms 10-100ms 1-5ms 缓存代理:低延迟需求 企业应用 内部服务代理 应用集群 CDN边缘节点 根据架构层级选择
负载均衡策略详解策略 配置指令 算法原理 适用场景 缺点 轮询 默认 顺序分配 默认均衡 不考虑服务器状态 加权轮询 weight=3
按权重比例 异构服务器 静态配置 IP哈希 ip_hash
客户端IP映射 会话保持 扩展性差 最少连接 least_conn
选择连接最少 长连接服务 计算开销 响应时间 fair
(第三方)最快响应优先 性能敏感服务 需额外模块
缓存优化技术缓存类型 存储位置 缓存内容 失效策略 性能影响 客户端缓存 用户浏览器 静态资源 Expires头 极高 边缘缓存 CDN节点 静态内容 TTL控制 高 反向代理缓存 Nginx服务器 动态内容 Cache-Control 中 应用缓存 内存(Redis) 数据库查询 LRU算法 极高
一、Nginx 代理服务器配置
1. 基础反向代理
[ root@localhost ~]
server { listen 80 ; server_name proxy.localhost; location / { proxy_pass http://backend_server; proxy_set_header Host $host ; proxy_set_header X-Real-IP $remote_addr ; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for ; }
}
upstream backend_server { server 192.168 .1.101:8080; server 192.168 .1.102:8080;
}
[ root@localhost ~]
2. 负载均衡策略
upstream backend { server 192.168 .1.101 weight = 3 ; server 192.168 .1.102;
}
upstream backend { ip_hash; server 192.168 .1.101; server 192.168 .1.102;
}
upstream backend { least_conn; server 192.168 .1.101; server 192.168 .1.102;
}
3. 缓存配置
proxy_cache_path /var/cache/nginx levels = 1 :2 keys_zone = PROXY_CACHE:10m inactive = 60m; server { location / { proxy_cache PROXY_CACHE; proxy_cache_valid 200 302 10m; proxy_cache_valid 404 1m; proxy_cache_min_uses 1 ; add_header X-Cache-Status $upstream_cache_status ; }
}
二、Nginx 性能优化
1. 连接优化
[ root@localhost ~]
events { worker_connections 10240 ; multi_accept on; use epoll;
} http { keepalive_timeout 30s; keepalive_requests 100 ; sendfile on; tcp_nopush on; tcp_nodelay on;
}
2. 压缩优化
gzip on;
gzip_min_length 1024 ;
gzip_comp_level 6 ;
gzip_types text/plain text/css application/json application/javascript;
gzip_vary on;
3. 静态资源优化
location ~* \ .( jpg| png| css| js) $ { expires 30d; access_log off; add_header Cache-Control "public" ; open_file_cache max = 1000 inactive = 20s;
}
4. 内核参数调优
[ root@localhost ~]
net.core.somaxconn = 65535
net.ipv4.tcp_max_syn_backlog = 65535
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_fin_timeout = 30
fs.file-max = 100000
[ root@localhost ~]
三、高级代理功能
1. WebSocket 代理
location /wsapp/ { proxy_pass http://websocket_backend; proxy_http_version 1.1 ; proxy_set_header Upgrade $http_upgrade ; proxy_set_header Connection "upgrade" ; proxy_read_timeout 600s;
}
2. 动态SSL证书
[ root@localhost ~]
[ root@localhost ~]
3. 地理位置路由
geo $geo { default default_backend; 192.168 .1.0/24 lan_backend;
} server { location / { proxy_pass http://$geo ; }
}
命令总结表格演示命令 功能描述 关键参数 proxy_pass http://backend
反向代理配置 后端服务器地址 upstream backend { ... }
定义服务器组 server
+ weight
proxy_cache_path
配置代理缓存 缓存路径和参数 worker_connections 10240
调整并发连接数 最大连接数 gzip on
启用压缩 减少传输体积 expires 30d
静态资源缓存 客户端缓存时间 sysctl -p
应用内核参数 系统级优化 certbot --nginx
自动SSL证书 免费HTTPS证书