http-proxy处理转发请求响应
来源:互联网 发布:真空料理机 鱼汤 知乎 编辑:程序博客网 时间:2024/05/16 16:05
最近参与了一个基于node开发的负载平衡转发框架,用到了http-proxy进行转发,但是需要统计转发到对应服务器的请求响应状态,通过查询资料发现如下:
const httpProxy = require('http-proxy');http.createServer(function (req, res) { httpProxy.web(req, res, {target: uri}, function (e) { console.log(e); });}).listen(PORT);httpProxy.createProxyServer({ changeOrigin: true, ignorePath: true});httpProxy.on('proxyRes', function(proxyRes, req, res) { let host = proxyRes.req.getHeader('host'); let path = proxyRes.req.path;})
http-proxy可以监听proxyRes事件,当转发的请求返回响应时,会触发该事件。(当客户端发起请求时,http-proxy转发到对应的目标服务器上,目标服务器返回请求内容时,触发proxyRes事件,回调执行结束后,再返回res给客户端)
proxyRes.req.getHeader() 可以获取对应的header头信息,为了能够得到转发服务器地址,
创建代理服务器时,需要配置changeOrigin为true,该选项用于更改目标地址头信息。比如: 客户端请求地址为 test.iqiyi.com,转发的目标服务器地址为 target.iqiyi.com,当changeOrigin设置为true时,host得到的是target.iqiyi.com;当设置为false时,host的值为test.iqiyi.com
除了proxyRes事件外,http-proxy还支持proxyReq事件,用于转发请求前,执行相关回调逻辑。代码如下:
proxy.on('proxyReq', function(proxyReq, req, res) { console.log("url:" + proxyReq.path);});
ignorePath用于转发请求时,是否将原请求地址中的path附加到转发地址后面。
比如: 客户端请求地址为:http://test.iqiyi.com/test,转发请求地址为:http://target.iqiyi.com/lib/mac/dianshiju/
- 当ignorePath为true时,代理服务器转发时不会添加path,直接请求http://target.iqiyi.com/lib/mac/dianshiju/
- 当ignorePath为false时,代理服务器转发请求时,会附加上原地址的path,去请求http://target.iqiyi.com/lib/mac/dianshiju/test
使用http-proxy创建代理服务器时,一般都会设置 ignorePath为true,便于转发请求处理。
阅读全文
0 0
- http-proxy处理转发请求响应
- Scoket 处理HTTP请求响应
- Http协议请求响应处理
- Apache 代理(Proxy) 转发请求
- Scoket模拟HTTP请求响应的处理
- Servlet-处理HTTP请求与响应
- http 请求转发服务器
- 设置apache2.4代理服务器转发HTTP请求与响应,通过slow http dos测试
- J2EE HTTP的请求和响应原理,servlet处理原理
- JavaWeb(三) ----Servlet处理HTTP响应,请求
- nginx处理post请求(http响应头部的收发)
- 处理HTTP响应(响应码、响应头、请求重定向、自动刷新/跳转)
- 处理HTTP响应(响应码、响应头、请求重定向、自动刷新/跳转)
- 处理HTTP响应(响应码、响应头、请求重定向、自动刷新/跳转)
- node+express+http-proxy-middleware代理转发
- HTTP请求/响应分析
- HTTP请求响应机制
- HTTP请求和响应。
- ReactNative工作原理
- 今日总结
- protobuf---Google通信协议
- longest-palindromic-substring
- numpy 中的ndarray数组返回符合特定条件的索引方法
- http-proxy处理转发请求响应
- 访问activemqProblem accessing /. Reason: Service Unavailable Powered by Jett
- Dragonboard410c 开机自动连接wifi
- 这是我的第一篇博客
- 关于playerunknown's battlegrounds中归零距离小谈
- Shell 命令教程(一) 文件操作
- group anagrams :颠倒字母顺序构成同一组词
- 面试题41:和为s的两个数字 VS 和为s的连续正整数序列
- jvm判断对象的死活