又被SOAP坑了一天

=======

说明篇

=======

之前基于nusoap搭好的nginx+php的webservice服务(http://blog.csdn.net/linvo/article/details/9109963),在和java那边调试的时候出错

java那边get wsdl时正常,post调用服务后报 “No namespace on "html" element” 错误,查了nginx log,发现nginx返回411错误

HTTP的411状态具体就不多说了,这里说下针对Nginx的情况:

nginx给出的官方解释有三种情况会引发nginx弹411回去

1、client sent invalid “Content-Length” header

2、client sent … method without “Content-Length” header

3、client sent “Transfer-Encoding: chunked” header

感觉像是第二种,但是最后我的解决方法却是:

为Nginx增加了HttpChunkinModule模块!

========

安装篇

========

安装前先看下当前Nginx的模块配置信息(例如):

/usr/local/nginx/sbin/nginx -V

nginx version: nginx/1.0.15
TLS SNI support disabled
configure arguments: --user=www --group=www --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module

下载chunkin-nginx-module(https://github.com/agentzh/chunkin-nginx-module/tags)并解压

重新编译Nginx,configure增加参数 --add-module=/root/chunkin-nginx-module-0.23/  (视情况设置此处模块的源码目录)

make -j2

make install

Nginx配置文件server中增加如下参数:

        server {
                chunkin on;

                error_page 411 = @my_411_error;
                location @my_411_error {
                chunkin_resume;
                }
                ……

重启Nginx,OK

----------------------------------- 我是分割线 --------------------------------------

相关链接:

http://blog.chinaunix.net/uid-16974460-id-296023.html

http://www.l99.com/1548156/blog/view/283241

http://wiki.nginx.org/HttpChunkinModule


你可能感兴趣的:(java,nginx,webservice,SOAP,411)