? ? ? 大家在用Nginx做負載均衡時,一般是采用默認的weight權重指定或默認的平均分配實現后端服務器的路由,還有一種做法是通過ip_hash來自動計算進行后端服務器的路由,但最近遇到一個問題,就是希望大部分用戶采用ip_hash自動分配后端服務器的同時,如何將指定ip或ip段訪問指向指定后端服務器?本文主要利用Nginx的upstream模塊的ip_hash實現負載均衡,同時結合geo模塊,通過ip_hash、default來實現上述需求,具體配置情況如下,供大家參考,記得重啟nginx,即可實現配置調整。配置完成后,ip為10.45.217.0/24段的用戶在訪問http://10.40.129.100:3001時,將自動路由到http://10.40.129.61:3000。
# 本機ip:10.40.129.100,以下是nginx.conf配置文件。
http {include mime.types;default_type application/octet-stream;log_format main '$remote_addr - $remote_user [$time_local] "$request" ''$status $body_bytes_sent "$http_referer" ''"$http_user_agent" "$http_x_forwarded_for"';access_log logs/access.log main;geo $back_servers {default backend; # 默認后端10.45.217.0/24 backend2; # 指定 IP 段對應的后端服務器(10.40.129.61) 客戶端的C段:相當于10.45.217.0至10.45.217.255之間的所有ip。}upstream backend {ip_hash;server 10.40.129.61:3000; server 10.40.129.90:3000; }upstream backend2 {server 10.40.129.61:3000; }# 1.HTTP Serverserver {listen 3001; location / { client_max_body_size 100m;proxy_set_header Host $host:3000;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; proxy_set_header Connection ""; proxy_pass http://$back_servers;}}
}