2 回答

TA貢獻1860條經(jīng)驗 獲得超8個贊
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("處理代理請求:" + 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) { // 請求被代理 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); // 寫回數(shù)據(jù)
});
pres.on("end", function() {
res.end();
});
});
}
}).listen(8088, "127.0.0.1");
console.log("代理服務器已經(jīng)在 8088 端口啟動。");
整個代理服務器的實現(xiàn)比較簡單。首先通過 http 模塊中的 createServer() 方法用來創(chuàng)建一個 HTTP 服務器,再通過 listen() 方法就可以讓該 HTTP 服務器在特定端口監(jiān)聽。在 createServer() 方法中傳入的參數(shù)是 HTTP 請求的響應方法。實際上,每個 HTTP 請求都是對應于 HTTP 服務器上的一個 request 事件。

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