iT邦幫忙

0

我有兩台一模一樣的虛擬主機 一台是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

請問該如何設定呢??

1 個回答

2
bizpro
iT邦大師 1 級 ‧ 2013-02-20 10:01:12

您要做的是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/;

phoenix99 iT邦新手 4 級 ‧ 2013-02-20 10:06:44 檢舉

你方便把下面的變數套上我的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;

moni iT邦新手 4 級 ‧ 2013-02-20 13:42:23 檢舉

那個是 nginx 預設的變數不用動,你要改的應該是 <ip of A> 、 <ip of B>

bizpro iT邦大師 1 級 ‧ 2013-02-21 08:46:15 檢舉

如同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)的主機中.

我要發表回答

立即登入回答