拋棄Nginx使用nodejs做反向代理服務器

時下不少場景,都是申請一個 VPS 主機來托管運行 Web 項目的颜说,小弟我也不例外迎吵,購買了一個小型的 Win 03 VPS

使用著。在使用的過程中桑逝,面臨一個問題,就是同一類型的服務端環(huán)境還好——但如果是一個 PHP俏让、一個 ASP楞遏、 一個 JSP

的三種類型的服務端項目并存著,該怎么分配唯一的 80 端口呢首昔?因為商業(yè) WWW 網(wǎng)站的話寡喝,往往只能占用 80

端口,——當然勒奇,如果只是做服務的話预鬓,如接口之類的,使用其他端口就不會與 80 端口沖突了赊颠。許多開發(fā)者都會面臨到 80

端口這個問題格二,并且實際情況會受到成本的限制劈彪。因為單獨為一個項目就買一個

VPS,也不太經(jīng)濟蟋定、不太合算粉臊,管理起來也不方便。于是驶兜,我們就應該好好考慮一下扼仲,怎么在提供一個 80

端口的情況下,分發(fā)到多種服務端那里去抄淑,讓不同的主機執(zhí)行各自的 Web 項目屠凶。

親,那這項需求我們說可以實現(xiàn)嗎肆资?是的矗愧,這并不是什么“神奇的技術”,也不是什么復雜的技術郑原。不知你是否有了解唉韭,網(wǎng)絡服務中的“反向代理(Reverse

Proxy)”,其中的一個功能就是可以完成端口的分發(fā)的犯犁。我們不妨以域名為路由分發(fā):凡是 AA.com 域名請求的属愤,分發(fā)到 PHP 82

端口執(zhí)行;凡是 BB.com 域名請求的酸役,分發(fā)到 ASP 83 端口執(zhí)行住诸;……

如此類推。當然這里的端口只說說明用而已涣澡,您可以任意配置贱呐,反正就是從 80

端口接收回來的請求,先作一次處理入桂,進而分發(fā)奄薇。反向代理,通俗地講抗愁,就是左手轉(zhuǎn)右手而已惕艳。

每當提起反向代理器,人們通常一想到的就是 Nginx驹愚,但是今天我們暫時忽略大名鼎鼎的

Nginx,采用同樣也是使用單線程劣纲、事件循環(huán)的服務端小弟——Nodejs 來達成逢捺。首先 Node 采用 JS 作服務端編程,而不是 Nginx

寫配置或 Lua癞季,比較符合我的味口劫瞳,其次自己對 Node 也比較熟悉倘潜,配置各方面什么的更為順手。

完成該項功能的是 node-http-proxy 包志于。下載涮因、安裝請鍵入:

npm install http-proxy

安裝完畢后,新建一個 proxy.js 文件伺绽,輸入:

var http = require('http'), httpProxy = require('http-proxy');

// 新建一個代理 Proxy Server 對象

var proxy = httpProxy.createProxyServer({});

// 捕獲異常

proxy.on('error', function (err, req, res) {

res.writeHead(500, {

'Content-Type': 'text/plain'

});

res.end('Something went wrong. And we are reporting a custom error message.');

});

// 另外新建一個 HTTP 80 端口的服務器养泡,也就是常規(guī) Node 創(chuàng)建 HTTP 服務器的方法。

// 在每次請求中奈应,調(diào)用 proxy.web(req, res config) 方法進行請求分發(fā)Create your custom server and just call `proxy.web()` to proxy

// a web request to the target passed in the options

// also you can use `proxy.ws()` to proxy a websockets request

//

var server = require('http').createServer(function(req, res) {

// You can define here your custom logic to handle the request

// and then proxy the request.

var host = req.url;

host = url.parse(host); host = host.host;

console.log("host:" + req.headers.host);

console.log("client ip:" + (req.headers['x-forwarded-for'] || req.connection.remoteAddress));

proxy.web(req, res, { target: 'http://localhost:8080' });

});

console.log("listening on port 80")

server.listen(80);


若說使用代理服務器的代價澜掩,可能就是會比不用消耗多的資源,消耗多的 CPU 運算罷了杖挣。

使用問題:不能指定文件夾 proxy.web(req, res, { target: 'http://phpstudy.net:81/foo/' });

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末肩榕,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子惩妇,更是在濱河造成了極大的恐慌株汉,老刑警劉巖,帶你破解...
    沈念sama閱讀 221,635評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件歌殃,死亡現(xiàn)場離奇詭異乔妈,居然都是意外死亡,警方通過查閱死者的電腦和手機挺份,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,543評論 3 399
  • 文/潘曉璐 我一進店門褒翰,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人匀泊,你說我怎么就攤上這事优训。” “怎么了各聘?”我有些...
    開封第一講書人閱讀 168,083評論 0 360
  • 文/不壞的土叔 我叫張陵揣非,是天一觀的道長。 經(jīng)常有香客問我躲因,道長早敬,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,640評論 1 296
  • 正文 為了忘掉前任大脉,我火速辦了婚禮搞监,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘镰矿。我一直安慰自己琐驴,他們只是感情好,可當我...
    茶點故事閱讀 68,640評論 6 397
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著绝淡,像睡著了一般宙刘。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上牢酵,一...
    開封第一講書人閱讀 52,262評論 1 308
  • 那天悬包,我揣著相機與錄音,去河邊找鬼馍乙。 笑死布近,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的潘拨。 我是一名探鬼主播吊输,決...
    沈念sama閱讀 40,833評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼铁追!你這毒婦竟也來了季蚂?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,736評論 0 276
  • 序言:老撾萬榮一對情侶失蹤琅束,失蹤者是張志新(化名)和其女友劉穎扭屁,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體涩禀,經(jīng)...
    沈念sama閱讀 46,280評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡料滥,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,369評論 3 340
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了艾船。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片葵腹。...
    茶點故事閱讀 40,503評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖屿岂,靈堂內(nèi)的尸體忽然破棺而出践宴,到底是詐尸還是另有隱情,我是刑警寧澤爷怀,帶...
    沈念sama閱讀 36,185評論 5 350
  • 正文 年R本政府宣布阻肩,位于F島的核電站,受9級特大地震影響运授,放射性物質(zhì)發(fā)生泄漏烤惊。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,870評論 3 333
  • 文/蒙蒙 一吁朦、第九天 我趴在偏房一處隱蔽的房頂上張望柒室。 院中可真熱鬧,春花似錦逗宜、人聲如沸雄右。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,340評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽不脯。三九已至,卻和暖如春刻诊,著一層夾襖步出監(jiān)牢的瞬間防楷,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,460評論 1 272
  • 我被黑心中介騙來泰國打工则涯, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留复局,地道東北人。 一個月前我還...
    沈念sama閱讀 48,909評論 3 376
  • 正文 我出身青樓粟判,卻偏偏與公主長得像亿昏,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子档礁,可洞房花燭夜當晚...
    茶點故事閱讀 45,512評論 2 359

推薦閱讀更多精彩內(nèi)容