iT邦幫忙

0

新舊網站共用網址問題

  • 分享至 

  • xImage

客戶的需求,自己的知識不足,所以只要再來尋求解方。

客戶有一個站台日前更新版本,新舊版系統分別在不同主機 (舊 192.168.1.100;新 192.168.1.101) 上,客戶要求希望用同一個網址 (abc.sample.com.tw) 然後後面帶不同的目錄 (舊 /aa ;新 /bb)而讓 request 跑至各自的站台。

也就是舊 abc.sample.com.tw/aa (192.168.1.100)跟新 abc.sample.com.tw/bb (192.168.1.101)。

舊的作業系統:Linux 新的作業系統:Windows

目前唯一想到可能達成的就是前面架台 PROXY ,但是專業同事表示無法 PROXY 無法達到此一需求,所以來請教前輩先進,不知道這樣的狀況是否有什麼技術或方法可以達成?

應該說要如何達成用同一個網址,但是後面的站台是指向不同的主機,能夠達成此一目的的方法,不限 DNS 。

謝謝!

資深菜鳥工程師 敬上

看更多先前的討論...收起先前的討論...
咖咖拉 iT邦好手 1 級 ‧ 2022-03-14 14:59:09 檢舉
HTTP service 是用哪一套?
天黑 iT邦研究生 5 級 ‧ 2022-03-14 15:00:35 檢舉
虛擬目錄不行嗎?
harrytsai iT邦新手 1 級 ‧ 2022-03-14 15:07:49 檢舉
沒這麼複雜,你用子網域去對應就好了
froce iT邦大師 1 級 ‧ 2022-03-14 15:19:08 檢舉
nginx可以做到。
"專業"同事說無法做到你自己做個小實驗測試一下不就好了。
看了一下,樓主要的是子目錄不是子網域,那CNAME 不能用
而且樓主是兩台機器,所以正常的做法是在做一台給他主要FQDN,然後開WEB SERVICE 接著設定兩個子目錄指向兩台機器
如果你希望主要FQDN指向兩台中的一台,也是可以直接在WEB SERVICE設定,DNS是無法直接做子目錄設定的
canchang iT邦新手 3 級 ‧ 2022-03-14 16:21:15 檢舉
謝謝各位的回答,我有稍稍更新一下資訊。
目前是除了網址是同一個名,客戶希望同一個網址去綁兩個 IP ,以實現一個網址再加站台,可以自己跑到對的 IP (主機) ,去。
所以 窮嘶發發發 兄提的,應該只用到一個 IP 。
天黑 兄,是兩台主機,兩個 IP 要去共用一個網址。
force 兄,您所謂的 nginx 可以做到,能不能多講一點呢?
harrytsai 兄,子網域去對應,是如何對應?不好意思,可能鑽進牛角尖了,需要再多一點資訊。

謝謝!
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中
1
froce
iT邦大師 1 級 ‧ 2022-03-14 16:50:14

拿個實際我在寫程式時使用的nginx conf來舉例吧。
就針對不同路徑設不同的proxy_pass這樣而已。

http {
    include       mime.types;
    default_type  application/octet-stream;

    server {
        listen       80;
        server_name  localhost;
        
        # 這是取得api的server,localhost:8000
        location /api/ {
            proxy_pass_header Server;
            proxy_redirect off;
            proxy_set_header Host $http_host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Scheme $scheme;
            proxy_set_header REMOTE_ADDR $remote_addr;
            proxy_pass http://localhost:8000;
        }

        # 前後端分離的前端部分。
        location / {
            root E:/frontend/dist;
            try_files $uri /index.html;
        }

        # 這是yarn serve要熱重載的ws server,localhost:8080
        location /sockjs-node {
            proxy_set_header X-Real-IP  $remote_addr;
            proxy_set_header X-Forwarded-For $remote_addr;
            proxy_set_header Host $host;

            proxy_pass http://localhost:8080;

            proxy_redirect off;

            proxy_http_version 1.1;
            proxy_set_header Upgrade $http_upgrade;
            proxy_set_header Connection "upgrade";
        }
    }
}
canchang iT邦新手 3 級 ‧ 2022-03-14 17:28:57 檢舉

照這樣看起來,似乎是所謂的反向 PROXY 。
你的網址 - IP 應該是只有一組,然後後面才去分實際要去的主機是那一台。
但是客戶的需求是一個網址配兩個 IP ,應該是在「前端」就要處理了,而不是進到 PROXY 再處理。

不過在打字的同時讓我想到,如果兩個 IP 全導到用一台 PROXY ,然後再由 PROXY 去分配話,應該可以達到這個需求。

謝謝!

froce iT邦大師 1 級 ‧ 2022-03-14 22:35:57 檢舉

你要的就是我寫的東西。這就是一組domain配2組server。
正向proxy辦不到,你自己去查reverse proxy是幹嘛用的,你理解錯誤了。

canchang iT邦新手 3 級 ‧ 2022-03-14 22:44:43 檢舉

我知道!只是少打了幾個字。
哈哈~~~~
謝謝提醒。
鑽出牛角了。

0
cmwang
iT邦大師 1 級 ‧ 2022-03-14 17:45:40

DNS只負責FQDN->IP,管不到URL中FQDN以外的部分,所以樓主要做的應該是架一台reverse proxy,不管要bind幾個IP都是導到這台reverse proxy,讓其就URL中目錄的部分導向真正的Web server,業主不一定了解網路的架構,您的工作就是提供他真正可行的方案/images/emoticon/emoticon11.gif....

canchang iT邦新手 3 級 ‧ 2022-03-14 22:49:39 檢舉

對對對!
之前一直卡在一個FQDN兩個 IP ,怎麼去正確的遞交資料給正確的主機。
就像你講的,一個FQDN,不然綁幾個 IP ,全都丟給這台 Reverse Proxy ,然後再由這台去做分析跟分派。
會卡住的一個原因是因為資深同事說 Reverse Proxy 做不到,才會有這個先入為主的障礙。
謝謝!

froce iT邦大師 1 級 ‧ 2022-03-15 08:04:07 檢舉

我都特地在專業上面加引號跟你說你該自己試試看了...

0
Bochin
iT邦新手 4 級 ‧ 2022-03-15 09:46:40

其實在閘道處設個Port轉向就能處理~
跟客戶協商看看預設 80 Port (or 443)給新站用
舊站後面用8080之類的閒置port
用目錄的方式,有時程式中相對路徑沒處理好會出怪手。

canchang iT邦新手 3 級 ‧ 2022-03-15 11:40:32 檢舉

客戶就是要都原封不動的照原本的操作方式來運作。
哈哈~~~~

我要發表回答

立即登入回答