2 回答
TA贡献1719条经验 获得超6个赞
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贡献1815条经验 获得超6个赞
服务器推荐用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 关注
- 805 浏览
添加回答
举报