如何編寫一個(gè)網(wǎng)站HTTP反向代理服務(wù)器在節(jié)點(diǎn).js上實(shí)現(xiàn)一個(gè)簡(jiǎn)單的HTTP代理仍然非常簡(jiǎn)單,本文的核心代碼示例只有60多行,只要您了解內(nèi)置http模塊的基本用法,見下文。網(wǎng)站建設(shè)常識(shí)丟掉以前的習(xí)慣,返回首頁不是每頁都需要做的,當(dāng)然如果只作一個(gè)關(guān)鍵詞的小站就不說了。阜陽網(wǎng)站制作公司設(shè)計(jì)過程的前端(客戶端),通常用來描述的網(wǎng)站,并不是簡(jiǎn)單的一個(gè)頁面,一個(gè)網(wǎng)站是包括很多工作的,其中包括域名注冊(cè)查詢?cè)O(shè)計(jì)效果圖,布局頁面,寫代碼等工作。阜陽網(wǎng)站建設(shè)涵蓋了許多不同的技能和學(xué)科中所使用的生產(chǎn)和維護(hù)的網(wǎng)站。不同領(lǐng)域的網(wǎng)頁設(shè)計(jì),網(wǎng)頁圖形設(shè)計(jì),界面設(shè)計(jì),創(chuàng)作,其中包括標(biāo)準(zhǔn)化的代碼和專有軟件,用戶體驗(yàn)設(shè)計(jì)和搜索引擎優(yōu)化。易雅網(wǎng)許多人常常會(huì)分為若干個(gè)工作小組,負(fù)責(zé)網(wǎng)站不同方面的設(shè)計(jì)。
接口設(shè)計(jì)與相關(guān)技術(shù)
使用http.createServer()創(chuàng)建的HTTP服務(wù)器,處理請(qǐng)求的函數(shù)格式一般為Function(req,res){}(以下簡(jiǎn)稱requestHandler),接收http.IncomingMessage和http.ServerResponse兩個(gè)參數(shù),通過它們可以獲取請(qǐng)求的所有信息并做出響應(yīng)。
用于 javascript web 框架(比如 connect)的中間件通常有兩種形式:
如果中間件不需要任何初始化參數(shù),那么它的輸出結(jié)果就是一個(gè)requestHandler
中間件技術(shù)需要進(jìn)行初始化工作參數(shù),則其導(dǎo)出研究結(jié)果為中間件的初始化目標(biāo)函數(shù),執(zhí)行該初始化相關(guān)函數(shù)時(shí),傳入中國(guó)一個(gè) options 對(duì)象,執(zhí)行后返回學(xué)生一個(gè) requestHandler
為了使代碼更規(guī)范,在本文例子中,我們將反向代理程序設(shè)計(jì)成一個(gè)中間件的格式,并使用以上第二種接口形式:
// 生成中間件
const handler = reverseProxy({
初始化參數(shù)以設(shè)置目標(biāo)服務(wù)器列表
servers: [127.0.0.1:3001, 127.0.0.1:3002, 127.0.0.1:3003]
});
//可以直接在 http 模塊中使用
Const server = http.createServer (handler);
// 作為一個(gè)中間件在 connect 模塊中使用
App.use (handler)
說明:
在上面的代碼中,反向Proxy是反向代理服務(wù)器中間件的初始化功能,它接受一個(gè)對(duì)象參數(shù),服務(wù)器是一個(gè)最終服務(wù)器地址列表,每個(gè)地址的格式,如IP地址:端口
Reverseproxy ()返回一個(gè)函數(shù),例如 function (req,res){} ,它用于處理 http 請(qǐng)求,例如 http。.創(chuàng)建服務(wù)器()和連接中間件。使用的處理程序()
當(dāng)接收到客戶端請(qǐng)求時(shí),從服務(wù)器陣列順序檢索服務(wù)器地址,請(qǐng)求是該地址的服務(wù)器的代理
服務(wù)器收到HTTP請(qǐng)求后,首先需要向目標(biāo)服務(wù)器發(fā)起一個(gè)新的HTTP請(qǐng)求作為代理,可以使用http.request()發(fā)送請(qǐng)求:
const req = http.request(
{
hostname: 目標(biāo)管理服務(wù)器進(jìn)行地址,
port: 80,
path: 請(qǐng)求路徑,
headers: {
x-y-z: 請(qǐng)求頭
}
},
function(res) {
// res 為響應(yīng)對(duì)象
Console.log (res.statusCode)
}
);
如果有要發(fā)送的請(qǐng)求正文,請(qǐng)使用 write() 和 end()
req.
上一篇:如何在手機(jī)上免費(fèi)構(gòu)建網(wǎng)站 |
下一篇:基本的移動(dòng)界面設(shè)計(jì)知識(shí) |