nodejs 实现 http proxy 透明转发
2014-02-26 22:22
435 查看
这两天需要安装一个Linux虚拟机,接下来要通过 yum 来安装需要的软件。
因单位的网络需要通过代理才能访问外网,公司代理服务器:proxy.xxxx.com,给yum增加了proxy设置:
发现linux无法访问代理服务器,Linux虚拟机只能访问宿主host所在的网段,添加了路由,网关等都没效果(知道方法的请回复下)
索性自己搭一个proxy,来做透明转发,用nodejs来写吧,用stream.pipe()透传就OK,关键是传递给proxy服务器的认证信息如何传过去。
这就写好了,启动 node proxy 后,用curl测试一下:
工作正常,虚拟机宿主:10.66.220.146,修改下 yum.conf
我可以在Linux里面 yum install了,That's very good.
因单位的网络需要通过代理才能访问外网,公司代理服务器:proxy.xxxx.com,给yum增加了proxy设置:
# vi /etc/yum.conf 添加下面的内容: proxy=http://user:password@proxy.xxxx.com:8080
发现linux无法访问代理服务器,Linux虚拟机只能访问宿主host所在的网段,添加了路由,网关等都没效果(知道方法的请回复下)
索性自己搭一个proxy,来做透明转发,用nodejs来写吧,用stream.pipe()透传就OK,关键是传递给proxy服务器的认证信息如何传过去。
var http = require('http'); var proxy = http.createServer(function(request, response) { var options = { host: 'proxy.xxxx.com', // 这里是代理服务器 port: 8080, // 这里是代理服务器端口 path: request.url, method: request.method, headers: { // 如果代理服务器需要认证 'Proxy-Authentication': 'Base ' + new Buffer('user:password').toString('base64') // 替换为代理服务器用户名和密码 } }; var req = http.request(options, function(req, res) { res.pipe(response); // 这个pipe很喜欢 console.log(req.url); }).end(); }).listen(8080);
这就写好了,启动 node proxy 后,用curl测试一下:
# curl -x localhost:8080 www.baidu.com
工作正常,虚拟机宿主:10.66.220.146,修改下 yum.conf
# vi yum.conf proxy=http://10.66.220.146:8080/
我可以在Linux里面 yum install了,That's very good.
相关文章推荐
- HTTP的请求头标签 If-Modified-Since
- 计算机网络关键点
- 列出Linux网络端口以及进程的所有信息
- HttpURLConnection用法详解
- HTTP请求报文和HTTP响应报文
- 使用服务端HTTP Client实现前jquery post跨域请求
- LA3027 合作网络
- 手动在linux中源码编译安装httpd
- 蓝桥杯试题 网络寻路 (构图+深搜)
- 用libvlc进行网络串流streaming
- win8任务管理器中进程网络始终为0的解决方案
- 转 http报文
- 无法复制XXX指定的网络名不再可用
- HTTP就绪状态和HTTP状态码
- SQL交叉表&常用实例(转载网络)
- Wireshark基本介绍和学习TCP三次握手
- android-async-http json字符串提交到服务器
- 创建XMLHttpRequest
- Linux 内核网络协议栈 ----- Linux 内核路由机制(一) (2.6.25)
- HTTP请求 GET POST 网络编程实现