想问一下,通过nginx负载接口调用请求无法请求到,用haproxy就能正常调用,这是为什么?
问题描述
目前有个接口是soap协议的,我使用nginx配置负载调用的话,会无法连接
报错如下,我在浏览器中能正常查看wsdl。
然后我使用haproxy做负载,能正常调用。能有大神能给我解惑一下吗?
nginx配置
upstream other{
server 192.168.184.23:48080 weight=5;
}
server {
listen 48084;
server_name 192.168.184.129;
#charset koi8-r;
#access_log logs/host.access.log main;
location / {
proxy_pass http://other;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
client_max_body_size 10m; #允许客户端请求的最大单文件字节数
client_body_buffer_size 128k; #缓冲区代理缓冲用户端请求的最大字节数,
proxy_connect_timeout 90; #nginx跟后端服务器连接超时时间(代理连接超时)
proxy_send_timeout 90; #后端服务器数据回传时间(代理发送超时)
proxy_read_timeout 90; #连接成功后,后端服务器响应时间(代理接收超时)
proxy_buffer_size 4k; #设置代理服务器(nginx)保存用户头信息的缓冲区大小
proxy_buffers 4 32k; #proxy_buffers缓冲区,网页平均在32k以下的话,这样设置
proxy_busy_buffers_size 64k; #高负荷下缓冲大小(proxy_buffers*2)
proxy_temp_file_write_size 64k; #设定缓存文件夹大小,大于这个值,将从upstream服务器传
root html;
index index.html index.htm;
}
haproxy配置
#logging options
global
log 127.0.0.1 local0 info
maxconn 5120
chroot /usr/local/haproxy
uid 99
gid 99
daemon
quiet
nbproc 20
pidfile /var/run/haproxy.pid
defaults
log global
#使用4层代理模式,”mode http”为7层代理模式
mode tcp
#if you set mode to tcp,then you nust change tcplog into httplog
option tcplog
option dontlognull
retries 3
option redispatch
maxconn 2000
contimeout 5s
##客户端空闲超时时间为 60秒 则HA 发起重连机制
clitimeout 60s
##服务器端链接超时时间为 15秒 则HA 发起重连机制
srvtimeout 15s
front-end IP for consumers and producters
listen other_cluster
bind 0.0.0.0:48083
#配置TCP模式
mode tcp
#balance url_param userid
#balance url_param session_id check_post 64
#balance hdr(User-Agent)
#balance hdr(host)
#balance hdr(Host) use_domain_only
#balance rdp-cookie
#balance leastconn
#balance source //ip
#简单的轮询
balance roundrobin
#负载节点配置 #inter 每隔五秒对负载节点做健康检查, 2次正确证明服务器可用,2次失败证明服务器不可用,并且配置主备机制
server user1 192.168.184.23:48080 check inter 5000 rise 2 fall 2
配置haproxy web监控,查看统计信息
listen stats
bind 192.168.184.129:8100
mode http
option httplog
stats enable
#设置haproxy监控地址为http://localhost:8100/other-bomcbp
stats uri /other-bomcbp
stats refresh 5s
相关代码
调用代码
JaxWsDynamicClientFactory dcf = JaxWsDynamicClientFactory.newInstance();
Client client = dcf.createClient(wsdl_url);
HTTPConduit conduit = (HTTPConduit) client.getConduit();
HTTPClientPolicy policy = new HTTPClientPolicy();
policy.setConnectionTimeout(CXF_CLIENT_CONNECT_TIMEOUT);
policy.setReceiveTimeout(CXF_CLIENT_RECEIVE_TIMEOUT);
conduit.setClient(policy);
Object[] objects = new Object[0];
logger.info("本次查询的方法:"+FUNCTION+",查询的流程:"+MODEL_ID+",查询的TYPE:"+WORK_TYPE+",查询的工单ID:"+EVENT_S_SEQ_ID);
objects = client.invoke(FUNCTION, MODEL_ID,WORK_TYPE,EVENT_S_SEQ_ID);
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论