歡迎您光臨本站 註冊首頁

nginx反向代理的一個疑問

←手機掃碼閱讀     火星人 @ 2014-03-04 , reply:0

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的反向代理,請高手指點!謝謝
《解決方案》

虛心學習來了...

[火星人 ] nginx反向代理的一個疑問已經有537次圍觀

http://coctec.com/docs/service/show-post-18887.html