2 回答

TA貢獻(xiàn)1860條經(jīng)驗(yàn) 獲得超8個(gè)贊
var http = require("http");
var url = require("url");
http.createServer(function (req, res) {
var urlObj = url.parse(req.url, true); // 獲取被代理的 URL
var urlToProxy = urlObj.query.url;
if (!urlToProxy) {
res.statusCode = 400;
res.end("URL 是必須的。");
}
else {
console.log("處理代理請(qǐng)求:" + urlToProxy);
var parsedUrl = url.parse(urlToProxy);
var opt = {
host : parsedUrl.hostname,
port : parsedUrl.port || 80,
path : (parsedUrl.pathname || "") + (parsedUrl.search || "")
+ (parsedUrl.hash || "")
};
http.get(opt, function(pres) { // 請(qǐng)求被代理 URL 的內(nèi)容
res.statusCode = pres.statusCode;
var headers = pres.headers;
for (var key in headers) {
res.setHeader(key, headers[key]);
}
pres.on("data", function(chunk) {
res.write(chunk); // 寫(xiě)回?cái)?shù)據(jù)
});
pres.on("end", function() {
res.end();
});
});
}
}).listen(8088, "127.0.0.1");
console.log("代理服務(wù)器已經(jīng)在 8088 端口啟動(dòng)。");
整個(gè)代理服務(wù)器的實(shí)現(xiàn)比較簡(jiǎn)單。首先通過(guò) http 模塊中的 createServer() 方法用來(lái)創(chuàng)建一個(gè) HTTP 服務(wù)器,再通過(guò) listen() 方法就可以讓該 HTTP 服務(wù)器在特定端口監(jiān)聽(tīng)。在 createServer() 方法中傳入的參數(shù)是 HTTP 請(qǐng)求的響應(yīng)方法。實(shí)際上,每個(gè) HTTP 請(qǐng)求都是對(duì)應(yīng)于 HTTP 服務(wù)器上的一個(gè) request 事件。

TA貢獻(xiàn)1795條經(jīng)驗(yàn) 獲得超7個(gè)贊
服務(wù)器推薦用nginx,配置簡(jiǎn)單,性能強(qiáng)悍。
nginx可以使用代理訪問(wèn)后端的Node.js應(yīng)用服務(wù)器。
配置方法:
1)在配置文件http段內(nèi)容添加后端服務(wù)器:
http {
#添加后端服務(wù)器,和nginx負(fù)載均衡配置一樣
upstream nodejs {
server 127.0.0.1:8080;
}
...
}
2)給應(yīng)用添加虛擬主機(jī):
server {
listen 80;
server_nameIP
location / {
proxy_pass nodejs;#名字和前面的對(duì)應(yīng),將所有的請(qǐng)求轉(zhuǎn)發(fā)給后端的node
}
access_log logs/nodejs.access.log main;#如果需要日志的話
}
推薦將靜態(tài)文件如css、js和圖片和應(yīng)用服務(wù)器分開(kāi)。
- 2 回答
- 0 關(guān)注
- 576 瀏覽
添加回答
舉報(bào)