客戶的需求,自己的知識不足,所以只要再來尋求解方。
客戶有一個站台日前更新版本,新舊版系統分別在不同主機 (舊 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 。
謝謝!
資深菜鳥工程師 敬上
拿個實際我在寫程式時使用的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";
}
}
}
DNS只負責FQDN->IP,管不到URL中FQDN以外的部分,所以樓主要做的應該是架一台reverse proxy,不管要bind幾個IP都是導到這台reverse proxy,讓其就URL中目錄的部分導向真正的Web server,業主不一定了解網路的架構,您的工作就是提供他真正可行的方案....
其實在閘道處設個Port轉向就能處理~
跟客戶協商看看預設 80 Port (or 443)給新站用
舊站後面用8080之類的閒置port
用目錄的方式,有時程式中相對路徑沒處理好會出怪手。