更新提醒(2026-10):本文寫於 2022 年,範例中的 ssl_protocols 仍啟用 TLSv1 與 TLSv1.1。這兩個版本已被 RFC 8996 正式棄用,較新的 Nginx 與 OpenSSL 預設也可能不再接受,建議改為只啟用 TLSv1.2 與 TLSv1.3。若你的後台需要存取保護,也可參考 【資安】Cloudflare Access 實戰:不用 VPN 保護後台與 Grafana。
Nginx 提供了以下三種負載平衡(load balancing)方法
- round-robin:預設值,會將請求輪流平均分配到每台伺服器上
- least-connected:會將請求分配到目前連線數最少的伺服器上
- ip-hash:利用 hash function 來決定使用者要被分配到哪台伺服器,這個方法可以讓同一個使用者(IP address)每次連線到的伺服器都相同
實作環境
Load Balancer
IP:192.168.0.1
Web Server 1
IP:192.168.0.2
Web Server 2
IP:192.168.0.3
Web Server 設定
server {
listen 80;
server_name {server_name};
access_log /var/log/nginx/access.log;
error_log /var/log/nginx/error.log;
location / {
root /usr/share/nginx/html;
index index.html index.htm;
}
}
Load Balancer 設定

upstream balancer 依 weight 分流給兩台伺服器,分流方法另有三種。
upstream balancer {
server 192.168.0.2 weight=3;
server 192.168.0.3 weight=2;
}
server {
listen 443 ssl;
server_name {server_name};
access_log /var/log/nginx/access.log;
error_log /var/log/nginx/error.log;
ssl_certificate {ssl_certificate};
ssl_certificate_key {ssl_certificate_key};
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
location / {
proxy_pass http://balancer;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
Host 設定
vi /etc/nginx/conf.d/default.conf
{server_name} 192.168.0.2
{server_name} 192.168.0.3
No comments yet.