想问一下,通过nginx负载接口调用请求无法请求到,用haproxy就能正常调用,这是为什么?

发布于 2022-09-11 17:57:16 字数 3190 浏览 17 评论 0

问题描述

目前有个接口是soap协议的,我使用nginx配置负载调用的话,会无法连接
报错如下,我在浏览器中能正常查看wsdl。
clipboard.png
然后我使用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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文