日韩在线首页I俄罗斯pornI男女猛烈激情XX00高潮动态I超碰免费97I乱人伦99久久I欧美日韩成人一区I最新日韩视频在线观看I粉嫩AV四季AV绯色AVI五月导航

×
新網 > 建站推廣 > 正文

怎么編寫網站的HTTP 反向代理服務器

  • 作者:新網
  • 來源:新網
  • 瀏覽:100
  • 2018-02-24 17:44:49

怎么編寫網站的HTTP 反向代理服務器?在 Node.js 上實現一個簡單的 HTTP 代理程序還是非常簡單的,本文章的例子的核心代碼只有 60 多行,只要理解 內置 http 模塊 的基本用法即可,具體請看下文。

 怎么編寫網站的HTTP 反向代理服務器?在 Node.js 上實現一個簡單的 HTTP 代理程序還是非常簡單的,本文章的例子的核心代碼只有 60 多行,只要理解 內置 http 模塊 的基本用法即可,具體請看下文。

 
接口設計與相關技術
 
使用 http.createServer() 創建的 HTTP 服務器,處理請求的函數格式一般為 function (req, res) {} (下文簡稱為 requestHandler ),其接收兩個參數,分別為 http.IncomingMessage 和 http.ServerResponse 對象,我們可以通過這兩個對象來取得請求的所有信息并對它進行響應。
 
主流的 Node.js Web 框架的中間件(比如 connect )一般都有兩種形式:
 
中間件不需要任何初始化參數,則其導出結果為一個 requestHandler
 
中間件需要初始化參數,則其導出結果為中間件的初始化函數,執行該初始化函數時,傳入一個 options 對象,執行后返回一個 requestHandler
 
為了使代碼更規范,在本文例子中,我們將反向代理程序設計成一個中間件的格式,并使用以上第二種接口形式:
 
// 生成中間件
 
const handler = reverseProxy({
 
// 初始化參數,用于設置目標服務器列表
 
servers: ["127.0.0.1:3001", "127.0.0.1:3002", "127.0.0.1:3003"]
 
});
 
// 可以直接在 http 模塊中使用
 
const server = http.createServer(handler);
 
// 作為中間件在 connect 模塊中使用
 
app.use(handler);
 
說明:
 
上面的代碼中, reverseProxy 是反向代理服務器中間件的初始化函數,它接受一個對象參數, servers 是后端服務器地址列表,每個地址為 IP 地址:端口 這樣的格式
 
執行 reverseProxy() 后返回一個 function (req, res) {} 這樣的函數,用于處理 HTTP 請求,可作為 http.createServer() 和 connect 中間件的 app.use() 的處理函數
 
當接收到客戶端請求時,按順序循環從 servers 數組中取出一個服務器地址,將請求代理到這個地址的服務器上
 
服務器在接收到 HTTP 請求后,首先需要發起一個新的 HTTP 請求到要代理的目標服務器,可以使用 http.request() 來發送請求:
 
const req = http.request(
 
{
 
hostname: "目標服務器地址",
 
port: "80",
 
path: "請求路徑",
 
headers: {
 
"x-y-z": "請求頭"
 
}
 
},
 
function(res) {
 
// res 為響應對象
 
console.log(res.statusCode);
 
}
 
);
 
// 如果有請求體需要發送,使用 write() 和 end()
 
req.end();
 
要將客戶端的請求體( Body 部分,在 POST 、 PUT 這些請求時會有請求體)轉發到另一個服務器上,可以使用 Stream 對象的 pipe() 方法,比如:
 
// req 和 res 為客戶端的請求和響應對象
 
// req2 和 res2 為服務器發起的代理請求和響應對象
 
// 將 req 收到的數據轉發到 req2
 
req.pipe(req2);
 
// 將 res2 收到的數據轉發到 res
 
res2.pipe(res);
 
說明:
 
req 對象是一個 Readable Stream (可讀流),通過 data 事件來接收數據,當收到 end事件時表示數據接收完畢
 
res 對象是一個 Writable Stream (可寫流),通過 write() 方法來輸出數據, end() 方法來結束輸出。
 
以上就是小編對于怎么編寫網站的HTTP 反向代理服務器的解答。
 

免責聲明:本文內容由互聯網用戶自發貢獻自行上傳,本網站不擁有所有權,也不承認相關法律責任。如果您發現本社區中有涉嫌抄襲的內容,請發送郵件至:operations@xinnet.com進行舉報,并提供相關證據,一經查實,本站將立刻刪除涉嫌侵權內容。

免費咨詢獲取折扣

Loading
主站蜘蛛池模板: 日日摸夜夜添狠狠添 | 熟女人妻aⅴ一区二区三区电影 | 久久免费国产 | 法国啄木系列成人av | 石原莉奈av调教中文字幕 | 99热18| 天天槽夜夜槽槽不停 | 极品久久久| 什么网站可以看毛片 | 2021亚洲国产精品无码 | 黄色激情视频在线观看 | 国产精品夜夜春夜夜爽久久小说 | 久久久美女视频 | 久久精品国产亚洲不av麻豆 | av一区二区三区在线观看 | 黄色毛片一级 | 日本少妇五级床片 | 91免费版黄| 日本在线国产 | 中文无码制服丝袜人妻av | aaa在线| 久久99精品国产99久久6尤物 | 国产精品久久久久久影视不卡 | 免费人成无码大片在线观看 | 色窝窝免费一区二区三区 | 国模吧无码一区二区三区 | 欧美91精品久久久久国产性生爱 | 国产男女免费完整视频 | 国产目拍亚洲精品一区二区 | 黄色尤物视频 | 亚洲精品色无码av试看 | 黄色小视频免费观看 | 91精品国产综合久久久久久丝袜 | 色婷婷六月 | 四虎成人精品永久免费av九九 | 色老板av | 久久久噜久噜久久综合 | 亚洲va国产日韩欧美精品色婷婷 | 国产精品亚洲二区在线播放 | 亚洲国产综合在线 | 苍井空第一次激烈高潮视频 | 国产一二在线观看 | 欧美交换配乱吟粗大在线观看 | 污动漫网站 | 疯狂做受xxxx高潮欧美日本 | 青青青国产在线观看手机免费 | 牛牛影视一区二区 | 日本一卡二卡四卡无卡乱码视频免费 | 经典av番号 | 欧美日本免费一区二区三区 | 欧美在线观看一区二区三区 | 人妻avav中文系列久久 | 99蜜桃臀久久久欧美精品网站 | 午夜免费啪视频在线观看 | 浓毛欧美老妇乱子伦视频 | 免费啪视频在线观看视频日本 | 黑人粗长大战亚洲女 | 蜜桃少妇av久久久久久久 | www.天天射 | 久久夫妻视频 | 免费视频国产在线观看 | 日本高清免费视频 | 亚洲va欧美va国产综合先锋 | 在线一区二区三区做爰视频网站 | 中文字幕91爱爱 | 青青偷拍视频 | 日韩一级影视 | 久女女热精品视频在线观看 | 久久亚洲色www成人网址 | 国产高清在线精品一本大道 | 亚洲狠亚洲狠亚洲狠狠狠 | 免费夜色污私人影院在线观看 | 国产三级韩国三级日本带黄 | 又黄又爽又色qq群 | 国产日产精品_国产精品毛片 | 5x性社区免费视频播 | 五月天丁香综合久久国产 | 欧美性插动态图 | 国产熟妇乱子伦视频在线观看 | 日本肉体xxxx裸体784大胆 | 国产yw855.c免费观看网站 | 少妇高潮淫片免费观看 | 国产精品无码无在线观看 | 国产xxxx高清在线观看 | 亚洲第一se情网站 | 亚洲永久网址在线观看 | 黄色小视频在线播放 | 最新69成人精品视频免费 | 欧美大片视频在线观看 | 我要看免费的毛片 | 一区二区国产高清视频在线 | 日韩欧美在线视频 | 麻豆久久久久久久 | 亚洲色大成网站www永久网站 | 欧美日韩一区二区免费视频 | 国产在线麻豆精品入口 | 成人亚欧欧美激情在线观看 | 亚洲精品成人片在线观看 | 十二月综合缴缴情小说 |