我正在使用org.springframework.web.client.RestTemplate发出一个http请求,但没有更新它的连接超时,我相信这会使它成为无限请求。但是每隔一段时间就会发生这种504网关超时。这可能是由我们要求的服务器引起的,也许它会在结束时花费很长时间并将其切断?这是一种可能性还是我的结束呢?
答案 0 :(得分:1)
这不是你的错。后端服务器无法按时与上游服务器通信。例如,如果Nginx(可能充当请求的网关的代理)正在与几个glassfish服务器实例通信并且其中一个发生故障,则会发生这种情况。它无法从关闭的服务器接收响应,并且通信将超时,此时它将返回HTTP 504
。
我遇到过与我暴露的REST服务类似的问题。在行为不端的服务上确定Qos需要几秒钟的时间并将其从流量中解决。此时,当故障服务器仍在提供流量时,网关可以决定发送504
。服务器最终会从流量中删除,事情会恢复正常。
答案 1 :(得分:1)
您的Java环境中未设置HTTP代理属性。
请看以下内容:https://docs.oracle.com/javase/8/docs/api/java/net/doc-files/net-properties.html
在Proxies
部分中,它解释了以下内容
http.proxyHost(默认值:)的主机名或地址 代理服务器
http.proxyPort(默认值:80)代理服务器的端口号。
http.nonProxyHosts:表示不应该通过代理的主机。
- https.proxyHost,https.proxyPort:与上述相同,但对于https并使用http.nonProxyHosts作为白名单。
就我自己而言,我的http.nonProxyHosts
格式错误,可以用于HTTP和HTTPS变量。多个主机的分隔符是管道|
, NOT 是逗号,
。
例如:
-d http.nonProxyHosts="*.mycompany.com|*.mycompany.net"