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證書