服務器 - nginx 如何配置負載均衡
問題描述
有三臺機器,ABC,所有請求都給A,然后A轉發給BC,由BC處理業務假設域名是bla.com在機器A上,http 模塊內寫以下配置,訪問bla.com,訪問到的是A默認頁面
upstream bla.com {ip_hash;server 192.168.100.2;server 192.168.100.3;}
怎么樣才能讓所有的請求都按 ip_hash 轉發給B,C
問題解答
回答1:https 負載均衡架構如圖,與http區別不大
upstream mywebapp1 { server 10.130.227.11; server 10.130.227.22;}server { listen 80; listen 443 ssl; server_name example.com www.example.com; ssl on; ssl_certificate /etc/nginx/ssl/example.com/server.crt; ssl_certificate_key /etc/nginx/ssl/example.com/server.key; ssl_trusted_certificate /etc/nginx/ssl/example.com/ca-certs.pem; location / {proxy_pass http://mywebapp1;proxy_set_header Host $host;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;proxy_set_header X-Forwarded-Proto $scheme; }}回答2:
你的意思是, 不想讓A服務器承擔流量了?
在服務器A轉發給后端時, 設置特殊的header
add_header HELLO Y;
B,C在發現有HELLO這個header時,立即返回302,讓用戶對B,C直接發起連接
if ($http_HELLO = ’Y’){ rewrite ^ http://$server_addr:$server_port$request_uri? redirect;}
相關文章:
1. mysql - 數據庫建字段,默認值空和empty string有什么區別 1102. 新人求教MySQL關于判斷后拼接條件進行查詢的sql語句3. 在mybatis使用mysql的ON DUPLICATE KEY UPDATE語法實現存在即更新應該使用哪個標簽?4. mysql - 這種分級一對多,且分級不平衡的模型該怎么設計表?5. Navicat for mysql 中以json格式儲存的數據存在大量反斜杠,如何去除?6. mysql - 數據庫表中,兩個表互為外鍵參考如何解決7. php - 公眾號文章底部的小程序二維碼如何統計?8. mysql - 表名稱前綴到底有啥用?9. mysql - 千萬數據 分頁,當偏移量 原來越大時,怎么優化速度10. mac OSX10.12.4 (16E195)下Mysql 5.7.18找不到配置文件my.cnf
