2 回答

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

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