筆者以筆者自己的項目為例。想達到的目的:
http://by-syk.com:8081/nanoiconpack/watchdog
>>> http://nano.by-syk.com/watchdog
并同時保證原來的訪問接口依然能用。
/etc/nginx/sites-enabled/default
舊配置:
server {
listen 8081;
server_name by-syk.com www.by-syk.com;
location / {
proxy_pass http://nodejs_nanoiconpack_servers;
}
}
/etc/nginx/sites-enabled/default
新配置:
server {
listen 80;
server_name nano.by-syk.com;
location / {
proxy_pass http://nodejs_nanoiconpack_servers;
}
}
server {
listen 8081;
server_name by-syk.com www.by-syk.com;
location / {
proxy_pass http://nodejs_nanoiconpack_servers;
}
// 兼容舊路徑
location /nanoiconpack/ {
# 例子說明末尾神奇的“/”:
# 對于 http://by-syk.com:8081/nanoiconpack/page/query
# 不加則代理為 http://by-syk.com:8081/nanoiconpack/page/query
# 加上則代理為 http://by-syk.com:8081/page/query
proxy_pass http://nodejs_nanoiconpack_servers/;
# rewrite '^/nanoiconpack(.*)$' $1;
}
}
同時調整服務器接口定義:
/*
app.get('/nanoiconpack/watchdog', function(req, res) {
logger.info('GET /nanoiconpack/watchdog');
res.jsonp(utils.getResRes(0, undefined, {
port: serverPort,
time: Date.now()
}));
});
*/
app.get('/watchdog', function(req, res) {
logger.info('GET /watchdog');
res.jsonp(utils.getResRes(0, undefined, {
port: serverPort,
time: Date.now()
}));
});
調整 HTML 頁面內部的調用:
/*
$.get("/nanoiconpack/watchdog", function(data) {
if (data && data.status == 0) {
// ...
}
});
*/
$.get("/watchdog", function(data) {
if (data && data.status == 0) {
// ...
}
});
TODO 這樣配置帶來了一個附加影響,增加了一個訪問通道:http://by-syk.com:8081/watchdog