亚洲综合极品香蕉久久网,久久夜精品综合缴情五月 ,亚洲动漫成人一区二区,国产在线不卡视频,国产丝袜精品不卡,亚洲乱码日产精品bd,久久久久久国产精品免费网站,亚洲综合av一区二区三区
×
新網 > 建站推廣 > 正文

怎么編寫網站的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
主站蜘蛛池模板: 日韩精品人妻无码久久影院| 欧美亅性猛交内射| 偷窥国产亚洲免费视频| 99久久免费国产精品| 国产精品天堂avav在线| 国内精品国产三级国产av| 亚洲欧美色综合影院| 老司机性色福利精品视频| 国产亚洲精品久久www| 884aa四虎影成人精品| 97亚洲熟妇自偷自拍另类图片| 国产丝袜在线精品丝袜不卡| 成 人 色综合 综合网站| 少妇人妻无码精品视频app| 久久亚洲欧美日本精品| 精品久久久久久无码中文字幕漫画| 国产蜜芽尤物在线一区| 色老板精品视频在线观看| 伊人久久综合给合综合久久| 精品一卡2卡三卡4卡乱码精品视频| 麻豆国产成人av在线播放| 精品人妻中文av一区二区三区| 久久麻豆成人精品av| 久久婷婷日日澡天天添| 少妇激情作爱视频| 久久综合九色综合97欧美| 日韩欧美偷拍高跟鞋精品一区| 欧美伊香蕉久久综合网另类| 久久久久久99av无码免费网站| 亚洲粉嫩高潮的18p| 内射白浆一区二区在线观看| 亚洲最大的熟女水蜜桃av网站| 亚洲红杏成在人线免费视频| 亚洲日韩看片无码超清| .一区二区三区在线 | 欧洲| 亚洲精品无码成人片久久| 麻豆aⅴ精品无码一区二区| 国产剧情无码播放在线观看| 亚洲精品卡2卡三卡4卡2卡乱码| 3344永久在线观看视频| 国产国语毛片在线看国产|