用NodeJS 做反向代理服务器
2015-10-29 16:18
549 查看
用NodeJS 做反向代理服务器
场景:
一台机器,一个80端口,多个web应用,怎样复用80端口呢?
反向代理:
NodeJS做反向代理80端口,根据 HTTP head 判断不同的服务类型,进行转发。
例如:baidu.com 域名请求在端口82,yahoo.com 域名请求在端口83, tianya.com 域名在端口84
软件包:
npm install http-proxy
代码部分:
新建proxy.js 文件:
var http = require('http'), httpProxy=require('http-proxy');
var proxy = httpProxy.createProxyServer( { } );
proxy.on('error', function(err, req, res) {
res.writeHead(500, {
'Content-Type':'text/plain'
} );
res.end('server error ');
} );
var server = require('http').createServer(function(req, res){
var host = req.headers.host;
var ip = req.headers['x-forwarded-for'] || req.connection.remoteAddress;
switch(host){
case 'baidu.com':
proxy.web(req, res, {target: 'http://localhost:82'});
break;
case 'yahoo.com':
proxy.web(req, res, { target: 'http://localhost:83'} );
break;
case 'tianya.com':
proxy.web(req, res, { target: 'http://localhost:84'});
break;
default:
res.writeHead(302, {'Content-Type':'text/plain' });
res.end("重定向错误!");
}
});
console.log("listening on port 80!");
server.listen(80);
场景:
一台机器,一个80端口,多个web应用,怎样复用80端口呢?
反向代理:
NodeJS做反向代理80端口,根据 HTTP head 判断不同的服务类型,进行转发。
例如:baidu.com 域名请求在端口82,yahoo.com 域名请求在端口83, tianya.com 域名在端口84
软件包:
npm install http-proxy
代码部分:
新建proxy.js 文件:
var http = require('http'), httpProxy=require('http-proxy');
var proxy = httpProxy.createProxyServer( { } );
proxy.on('error', function(err, req, res) {
res.writeHead(500, {
'Content-Type':'text/plain'
} );
res.end('server error ');
} );
var server = require('http').createServer(function(req, res){
var host = req.headers.host;
var ip = req.headers['x-forwarded-for'] || req.connection.remoteAddress;
switch(host){
case 'baidu.com':
proxy.web(req, res, {target: 'http://localhost:82'});
break;
case 'yahoo.com':
proxy.web(req, res, { target: 'http://localhost:83'} );
break;
case 'tianya.com':
proxy.web(req, res, { target: 'http://localhost:84'});
break;
default:
res.writeHead(302, {'Content-Type':'text/plain' });
res.end("重定向错误!");
}
});
console.log("listening on port 80!");
server.listen(80);
相关文章推荐
- 使用ruby部署工具mina快速部署nodejs应用教程
- Google官方支持的NodeJS访问API,提供后台登录授权
- 浅谈Nodejs观察者模式
- nodejs教程之环境安装及运行
- nodejs中的fiber(纤程)库详解
- 基于NodeJS的前后端分离的思考与实践(五)多终端适配
- 基于NodeJS的前后端分离的思考与实践(二)模版探索
- 我的NodeJs学习小结(一)
- nodejs中实现sleep功能实例
- Nodejs异步回调的优雅处理方法
- Windows系统下使用Sublime搭建nodejs环境
- nodejs实现获取某宝商品分类
- nodejs简单实现中英文翻译
- Node.js插件的正确编写方式
- 使用upstart把nodejs应用封装为系统服务实例
- NodeJS Web应用监听sock文件实例
- Nodejs学习笔记之测试驱动
- Nodejs学习笔记之Stream模块
- 如何正确使用Nodejs 的 c++ module 链接到 OpenSSL
- Nodejs为什么选择javascript为载体语言