nginx反向代理的一個疑問
例如有三台機器
192.168.1.1 用nginx作反向代理
192.168.1.2 用nginx做web
192.168.1.3 用nginx做web
現在有www.abc.com和www.cba.com兩個域名同時解析到192.168.1.1這台機器上
我的問題是,如何在192.168.1.1上實現這種要求:
即當用戶訪問是www.abc.com開頭的連接時 proxy_pass http://192.168.1.2
當用戶訪問www.cba.com開頭的連接時 proxy_pass http://192.168.1.3
請問這樣能實現嗎,如果能,又該怎麼寫配置文件?謝謝!
《解決方案》
正好我有一個和你類似的需求,採用類似下面的方法已經成功。
其中 optimize_server_names 和 server_name_in_redirect 兩個選項很關鍵
optimize_server_names off;
server_name_in_redirect off;
server {
listen 80;
server_name www.abc.com www.cba.com;
access_log /var/log/nginx/server.access.log;
location / {
if ($host = www.abc.com) {
proxy_pass http://192.168.1.2;
include /etc/nginx/proxy_header;
break;
}
if ($host = www.cba.com) {
proxy_pass http://192.168.1.3;
include /etc/nginx/proxy_header;
break;
}
root /var/www/nginx-default;
index index.html index.htm;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /var/www/nginx-default;
}
}
[ 本帖最後由 suncle 於 2009-8-29 21:32 編輯 ]
《解決方案》
自己先頂起來
《解決方案》
先用if判斷是哪個域名,然後再代理到相應的伺服器,不知道這樣行不行,我也沒搞過,只是這樣想的
《解決方案》
server {
listen 80;
server_name www.abc.com;
access_log /var/log/nginx/server.access.log;
location / {
proxy_pass http://192.168.1.2;
root /var/www/nginx-default;
index index.html index.htm;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /var/www/nginx-default;
}
}
server {
listen 80;
server_name www.cba.com;
access_log /var/log/nginx/server.access.log;
location / {
proxy_pass http://192.168.1.3;
root /var/www/nginx-default;
index index.html index.htm;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /var/www/nginx-default;
}
}
nginx下的虛擬主機配置
[ 本帖最後由 liuwt123 於 2009-8-29 22:45 編輯 ]
《解決方案》
原帖由 suncle 於 2009-8-29 21:30 發表 http://bbs3.chinaunix.net/images/common/back.gif
正好我有一個和你類似的需求,採用類似下面的方法已經成功。
其中 optimize_server_names 和 server_name_in_redirect 兩個選項很關鍵
optimize_server_names off;
server_name_in_redirect off;
s ...
我開始也是想用if去判斷,但是苦於不知道nginx的if後面可以跟些什麼選項,有沒有哪篇文章是專門介紹nginx的if選項的,推薦一下
[ 本帖最後由 00306 於 2009-8-31 09:29 編輯 ]
《解決方案》
我現在也需要配置nginx作為反向代理伺服器,是代理外網的web頁面,我內網本身沒有web站點,我不知道怎麼去配置nginx的反向代理,請高手指點!謝謝
《解決方案》
虛心學習來了...