我有兩台一模一樣的虛擬主機 一台是A主機 一台是B主機 假設網址名稱都是 happy.123.com
我可以用nginx當proxy server 指定 happy.123.com 只轉到 A主機 並能成功做虛擬主機解析
一般都是 proxy_pass http://happy.123.com:80; 但不能指定ip
若 proxy_pass http://a主機ip:80; 卻不能解析出他就是happy.123.com
請問該如何設定呢??
您要做的是load balancing?
基本的邏輯是這樣的:
upstream lbab {
server <ip of A>;
server <ip of B>;
}
location / {
....
proxy_pass http://lbab$request_uri;
...
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 cache來處理靜態內容, 也可加上microcaching,...等以發揮nginx的最大功效.
您要解析出happy.123.com, 這是要設定server_name和root:
server_name happy.123.com;
root /var/www/;
你方便把下面的變數套上我的happy.123.com 及ip看看嗎??假如ip是111.111.111.111
$request_uri $host $remote_addr $proxy_add_x_forwarded_for 這四個變數要套那些數據嗎??
proxy_pass http://lbab$request_uri;
...
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
那個是 nginx 預設的變數不用動,你要改的應該是 <ip of A> 、 <ip of B>
如同moni大所說的, 只需改<ip of A> 、 <ip of B>.
而
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
就是要把真實IP帶到後端(upstream)的主機中.