亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

拋棄Nginx使用nodejs做反向代理服務(wù)器

 更新時間:2014年07月17日 08:44:52   作者:zhangxin09  
每當(dāng)提起反向代理器,人們通常一想到的就是 Nginx,但是今天我們暫時忽略大名鼎鼎的 Nginx,采用同樣也是使用單線程、事件循環(huán)的服務(wù)端小弟——Nodejs 來達成。

時下不少場景,都是申請一個 VPS 主機來托管運行 Web 項目的,小弟我也不例外,購買了一個小型的 Win 03 VPS 使用著。在使用的過程中,面臨一個問題,就是同一類型的服務(wù)端環(huán)境還好——但如果是一個 PHP、一個 ASP、 一個 JSP 的三種類型的服務(wù)端項目并存著,該怎么分配唯一的 80 端口呢?因為商業(yè) WWW 網(wǎng)站的話,往往只能占用 80  端口,——當(dāng)然,如果只是做服務(wù)的話,如接口之類的,使用其他端口就不會與 80 端口沖突了。許多開發(fā)者都會面臨到 80 端口這個問題,并且實際情況會受到成本的限制。因為單獨為一個項目就買一個 VPS,也不太經(jīng)濟、不太合算,管理起來也不方便。于是,我們就應(yīng)該好好考慮一下,怎么在提供一個 80 端口的情況下,分發(fā)到多種服務(wù)端那里去,讓不同的主機執(zhí)行各自的 Web 項目。

親,那這項需求我們說可以實現(xiàn)嗎?是的,這并不是什么“神奇的技術(shù)”,也不是什么復(fù)雜的技術(shù)。不知你是否有了解,網(wǎng)絡(luò)服務(wù)中的“反向代理(Reverse Proxy)”,其中的一個功能就是可以完成端口的分發(fā)的。我們不妨以域名為路由分發(fā):凡是 AA.com 域名請求的,分發(fā)到 PHP 82 端口執(zhí)行;凡是 BB.com 域名請求的,分發(fā)到 ASP 83 端口執(zhí)行;…… 如此類推。當(dāng)然這里的端口只說說明用而已,您可以任意配置,反正就是從 80 端口接收回來的請求,先作一次處理,進而分發(fā)。反向代理,通俗地講,就是左手轉(zhuǎn)右手而已。

每當(dāng)提起反向代理器,人們通常一想到的就是 Nginx,但是今天我們暫時忽略大名鼎鼎的 Nginx,采用同樣也是使用單線程、事件循環(huán)的服務(wù)端小弟——Nodejs 來達成。首先 Node 采用 JS 作服務(wù)端編程,而不是 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 端口的服務(wù)器,也就是常規(guī) Node 創(chuàng)建 HTTP 服務(wù)器的方法。
// 在每次請求中,調(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);

若說使用代理服務(wù)器的代價,可能就是會比不用消耗多的資源,消耗多的 CPU 運算罷了。

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

相關(guān)文章

  • nodejs接入阿里大魚短信驗證碼的方法

    nodejs接入阿里大魚短信驗證碼的方法

    本篇文章主要介紹了nodejs接入阿里大魚短信驗證碼的方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下。
    2017-07-07
  • 一文帶你了解Node.js中的path模塊

    一文帶你了解Node.js中的path模塊

    Node.js和Python技術(shù)類似,?都致力于能夠?qū)崿F(xiàn)跨平臺的通用代碼。?為此,針對路徑的拼接,?Node.js提供了path模塊,本文就來講講path模塊的使用
    2023-03-03
  • node.js中的fs.rmdir方法使用說明

    node.js中的fs.rmdir方法使用說明

    這篇文章主要介紹了node.js中的fs.rmdir方法使用說明,本文介紹了fs.rmdir方法說明、語法、接收參數(shù)、使用實例和實現(xiàn)源碼,需要的朋友可以參考下
    2014-12-12
  • node實現(xiàn)爬蟲的幾種簡易方式

    node實現(xiàn)爬蟲的幾種簡易方式

    這篇文章主要給大家介紹了關(guān)于node實現(xiàn)爬蟲的幾種簡易方式,文中通過示例代碼介紹的非常詳細,對大家學(xué)習(xí)或者使用node具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-08-08
  • websocket+node.js實現(xiàn)實時聊天系統(tǒng)問題咨詢

    websocket+node.js實現(xiàn)實時聊天系統(tǒng)問題咨詢

    最近新學(xué)習(xí)websocket,做了一個實時聊天。用Node.js搭建的服務(wù):serevr.js. 兩個相互通信頁面:client.html 和server.html 但是就是有很多問題,下面通過本文給大家分享下
    2017-05-05
  • nodejs中操作mysql數(shù)據(jù)庫示例

    nodejs中操作mysql數(shù)據(jù)庫示例

    這篇文章主要介紹了nodejs中操作mysql數(shù)據(jù)庫示例,本文演示了如何在NodeJS中創(chuàng)建創(chuàng)建mysql連接、mysql數(shù)據(jù)庫、插入數(shù)據(jù)、查詢數(shù)據(jù)等功能,需要的朋友可以參考下
    2014-12-12
  • Centos7 中安裝 Node.js v4.4.4

    Centos7 中安裝 Node.js v4.4.4

    我一直對學(xué)習(xí)Node.js比較感興趣。這是一個Java平臺的服務(wù)器端編程 ,它允許開發(fā)人員在服務(wù)器編寫Java代碼,并且有許多CentOS的用戶正努力學(xué)習(xí)這個語言的開發(fā)環(huán)境。這正是我想做這個教程的目的。
    2016-11-11
  • Node.js連接MongoDB數(shù)據(jù)庫產(chǎn)生的問題

    Node.js連接MongoDB數(shù)據(jù)庫產(chǎn)生的問題

    Node.js是使用JavaScript 編寫的可以運行在服務(wù)端的JS語言。node.js和mongodb碰撞會產(chǎn)生一系列問題,下面通過本文給大家分享Node.js連接MongoDB數(shù)據(jù)庫,需要的的朋友參考下
    2017-02-02
  • 詳解離線安裝npm包的幾種方法

    詳解離線安裝npm包的幾種方法

    這篇文章主要介紹了詳解離線安裝npm包的幾種方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-11-11
  • node.js根據(jù)不同請求路徑返回不同數(shù)據(jù)詳解流程

    node.js根據(jù)不同請求路徑返回不同數(shù)據(jù)詳解流程

    本篇文章介紹了我在開發(fā)過程中發(fā)現(xiàn)的一個小問題,就是node.js如何能夠根據(jù)不同的請求路徑來返回得到不同數(shù)據(jù),通讀本篇對大家的學(xué)習(xí)或工作具有一定的價值,需要的朋友可以參考下
    2021-10-10

最新評論