公司的产品各个分布式组件之间使用基于xfire的web service进行行为触发和信息传递。
之前一直通过网络层虚拟IP工具进行集群,因本人最近要搭建一套开发的测试环境,但硬件集群昂贵,所以想通过Web server反向代理来实现局域网内地址和端口的转发。
备选有两个:nginx和apache,下面做一些探索和分析,希望对大家有帮助
nginx这个反向代理的工具不错,但是就是不支持chunked post
查了一下,可以通过一些第三方的module解决,原理是把chunked request,拦截并聚合成单一的request,再进行转发。
但是问题是这样处理后header保留的Transfer-Encoding header会导致服务端解析错误(服务端又当成chunked处理了)
于是就需要另一个module,拦截并去掉header里的Transfer-Encoding标记
下一个问题是官方只支持核心的module,并且对于windows只提供build,不提供build环境
没办法,用cygwin,需要用到的库有pcre,perl的正则库,然后把上面说的两个module:
HttpChunkinModule和HttpHeadersMoreModule的src下载下来,configure的时候加上
configure参数如下:
$ ./configure --prefix=. --sbin-path=nginx --add-module=./chunk/ --add-module=.
/header-cut/ --with-cc-opt="-D FD_SETSIZE=2048" --with-pcre=./pcre/
然后make make install,最后把程序运行的依赖的dll从cygwin拷贝出来就可以了
这样子试过之后,发现还是不能解决问题,通过wireshark抓包发现原因是chunked请求被合并了,但是头采用的是mtom xop协议,服务端会默认采用chunked来解析,这时又丢失了boundary。
不知道通过修改header能不能解决这个问题,原理是把xop协议相关的头修改成普通的soap协议头
没办法,只能选择apache了,apache2.2默认即支持chunked的反向代理,只需enable相关模块,并配置proxypass即可,这个不需要什么改动,就不赘言了。
结论,对于use了mtom和chunked-enabled的web services请求进行load-balance时,暂时nginx还没有很好的支持,建议直接采用apache2。
否则,就把这两个特性关了吧。
P.S
为什么非要用Windows,因为公司设备监护人员暂时不能管理linux设备,一是操作要求高,二是安全方案的一致性
分享到:
相关推荐
测试方式(依次在浏览器输入一下...4、支持chunked数据的解析 缺点: 1、支持的方法不够全面 2、CGI实现不够科学,可以尝试使用FASTCGI 3、不支持https 4、不支持回应chunked数据 感兴趣的同学可以继续完善相关功能.
一个对chunked编码进行解码的例子,通过java socket实现发送http请求,对gzip压缩的消息体进行解码处理。
HTTP协议是互联网上应用最为广泛的一种网络协议,用于在Web浏览器和服务器之间传输数据。Chunked编码是HTTP协议(特别是HTTP/1.1版本)中的一...同时,网络管理员也需要关注chunked编码对服务器性能和网络流量的影响。
在本文中,我们将深入探讨如何使用Microsoft Foundation Class (MFC) 库在Visual C++ 6.0环境下实现一个简单的Web服务器程序。MFC是微软为C++开发人员提供的一套面向对象的类库,它封装了Windows API,使得Windows...
总之,MTOM Web Services 2005是.NET 2.0时代提升Web服务中大文件传输效率的重要技术。通过VS 2005和WSE,开发者能够方便地创建和利用支持MTOM的Web服务,从而在保持XML的结构化优势的同时,显著降低网络带宽的消耗...
在.NET Framework 2.0及更高版本中,Microsoft提供了Windows Communication Foundation (WCF)作为构建Web服务的新平台,取代了早期的Web Services Enhancements (WSE)。然而,VS 2008仍然支持WSE,尽管WCF通常是更好...
这个插件的主要功能是编码和解码使用了chunked编码的数据,从而帮助安全测试人员在进行Web应用程序渗透测试时绕过WAF(Web应用防火墙)的检测。 WAF通常会检查HTTP请求的完整内容,包括请求体的长度,以防止恶意...
在这种编码方式下,响应体被分成若干个较小的数据块(或称为“chunk”),每个块前都有一个表示该块大小的十六进制数字。这种方式特别适用于服务器无法提前知道响应体总长度的情况,例如动态生成的内容。 在Boost....
程序可能还包括错误检查和异常处理机制,以确保在遇到无效数据或网络问题时能妥善处理。 编写这样的程序需要对HTTP协议有深入的理解,并熟悉C语言的基本I/O操作。此外,为了确保兼容性,还需要考虑不同的网络环境和...
主要来源是https://github.com/c0ny1/chunked-coding-converter 这里感谢下c0ny1师傅的分享 但基于此基础,这里是我个人已经编译完成好的,省去编译步骤,小白皆可使用,可以直接使用burp导入插件
这种情况下,需要关闭 chunked 编码的传输方式,或者在服务端程序中添加“Content-Length”头信息,以便客户端正确地接收数据。 在实际应用中,可能会遇到多种不同的客户端,例如浏览器、移动应用、桌面应用等。...
不影响功能)开发环境Ubuntu 20.04, gcc V9.3.0, OpenSSL 1.1.1功能说明对HTTP、HTTPS支持Centent-Type的支持(对应Chunked模式)对分块长度的评估文件注在HTTP层,仅完成部分头部协议识别,传输层与SSL层完成了...
其中块大小由一个或多个十六进制数字表示,块扩展可以包含多个分号分隔的扩展名(chunk-ext-name)和值(chunk-ext-val)对。块数据是实际传输的数据,其长度等于块大小所指定的值。 #### 最后块 最后块是一个特殊块,...
在chunked模式下,数据被分为多个块,每个块都有一个十六进制的大小前缀,后面跟着块的实际内容,最后是一块大小为0的块表示数据结束。 以下是一个基本的Java代码示例,展示如何使用Socket来接收chunked数据: ```...
netty案例,netty4.1中级拓展篇十一《Netty基于ChunkedStream数据流切块传输》源码 ...
1. **编译Nginx**:在Windows环境下,我们可以使用Visual Studio等IDE或者 Mingw-w64 这样的交叉编译工具。打开命令行,进入Nginx源代码目录,运行以下命令进行配置: ``` ./configure --prefix=path\to\nginx --...
burpsuite分块传输插件,一键生成分块传输请求,用于bypass waf等