Nginx代理技术全景图
代理类型深度对比
特性 | 基础反向代理 | 负载均衡 | 缓存代理 | 最佳适用场景 |
---|
核心功能 | 请求转发 | 流量分配 | 内容缓存 | 缓存代理:高重复请求 |
性能影响 | 中 | 高 | 极高 | 负载均衡:高并发系统 |
配置复杂度 | ★★☆☆☆ | ★★★☆☆ | ★★★★☆ | 基础代理:简单转发 |
资源消耗 | 低 | 中 | 高(内存) | 按需求选择 |
典型延迟 | 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证书 |