對於一個大型網站來說,隨着網站訪問量的快速增長,單台服務器已經無法承擔大量用戶的並發訪問,必須以增加服務器的方式,提高計算機系統的處理能力,計算速度,進而滿足當前業務量的需求。那么如何實現服務器之間的協同功能呢?Nginx提供的反向代理和負載均衡功能是一個很好的解決方案。
反向代理
在Nginx服務器中,反向代理的配置非常簡單,最主要的指令就是“proxy_pass”,用於設置后端服務器的地址。

server { listen 80; server_name localhost; location / { proxy_pass http://localhost:9000; } }
如上配置 所有 http://localhost:80的請求都會被轉發到http://localhost:9000。
負載均衡
負載均衡就是將負載分攤到多個操作單元上執行,從而提高服務的可用性和響應速度,帶給用戶更好的體驗。
Nginx默認支持輪詢、權重、ip Hash等多種負載均衡策略。
- 輪詢:默認設置方式,每個請求按時間順序逐一分配到不同的后端服務器進行處理,可以自動剔除宕機服務器。
- 權重方式:利用weight指定輪詢的權重比率,用於后端服務器性能不均的情況。
- ip_hash方式:每個請求按照IP的hash結果分配,這樣可以讓每個訪客每次請求都訪問同一個后端服務器,可以解決session共享的問題。
- 第三方模塊:fair或url_hash等策略,nginx本身不包含該實現,需要下載對應的軟件包。
輪詢配置:

server { listen 80; server_name localhost; location / { proxy_pass http://web_server; } } #配置負載均衡服務器組 輪詢方式 upstream web_server { server 192.168.78.128; server 192.168.78.129; }
權重方式配置:

upstream web_server1 { server 192.168.78.128 weight=1; server 192.168.78.129 weight=3; } upstream web_server2 { server 192.168.78.128 weight=1 max_fails=1 fail_timeout=2; server 192.168.78.129 weight=3; server 192.168.78.130 backup; }
按上圖web_server1配置后,3/4的流量會轉發到192.168.78.129的服務器上,1/4的流量會轉發到192.168.78.128的服務器上,web_server2的配置表示 nginx在2s內發現后端服務異常達到max_fails次,就將該服務器標記為不可用。backup標記為預留的備份機器,當上面上個服務都宕機時,會將流量轉發到備份機器。
IP Hash方式:

upstream web_server1 { ip_hash; server 192.168.78.128; server 192.168.78.129; server 192.168.78.130 down; }
down參數可以將服務器標記為下線狀態,在路由分配時,會忽略該服務器。