我正在运行Ubuntu 12.04LTS。我的and服务器是Tomcat7.0.42,我使用HAProxy作为代理服务器。我的应用程序是一个使用websockets的servlet应用程序。
有时当我请求我页面时,我在一些资源上得到"502 Bad Gateway“错误,不是全部,而是在一些资源上。我认为这与我的HAProxy配置有关,如下所示:
global
maxconn 4096 # Total Max Connections. This is dependent on ulimit
nbproc 1
defaults
mode http
option http-server-close
option httpclose
# option redispatch
no option checkcache # test against 502 error
frontend all 0.0.0.0:80
timeout client 86400000
default_backend www_backend
acl is_websocket hdr(Upgrade) -i WebSocket
acl is_websocket hdr_beg(Host) -i ws
use_backend socket_backend if is_websocket
backend www_backend
balance roundrobin
option forwardfor # This sets X-Forwarded-For
timeout server 30000
timeout connect 4000
server apiserver localhost:8080 weight 1 maxconn 1024 check
backend socket_backend
balance roundrobin
option forwardfor # This sets X-Forwarded-For
timeout queue 5000
timeout server 86400000
timeout connect 86400000
server apiserver localhost:8080 weight 1 maxconn 1024 check我必须进行哪些更改才能防止502错误?
发布于 2013-09-11 00:40:15
首先,启用haproxy日志记录。我的猜测是后端的"localhost:8080“根本无法跟上,或者无法在4000ms的"timeout connect 4000”内获得连接。
发布于 2016-03-10 06:01:21
您可能已超出HAProxy中的某些默认限制。尝试将以下内容添加到全局部分:
tune.maxrewrite 4096
tune.http.maxhdr 202发布于 2020-11-20 11:49:51
您应该将您的默认设置替换为以下设置:
# Set balance mode
balance random
# Set http mode
mode http
# Set http keep alive mode (https://cbonte.github.io/haproxy-dconv/2.3/configuration.html#4)
option http-keep-alive
# Set http log format
option httplog
# Dont log empty line
option dontlognull
# Dissociate client from dead server
option redispatch
# Insert X-Forwarded-For header
option forwardfor不要使用http-server-close,它很可能是导致问题的原因。
Keep-alive将与两端的客户端和服务器建立连接。它在websockets上也能很好地工作。
如果您在服务器上启用了检查,则还需要使用以下内容进行配置:
# Enable http check
option httpchk
# Use server configuration
http-check connect default
# Use HEAD on / with HTTP/1.1 protocol for Host example.com
http-check send meth HEAD uri / ver HTTP/1.1 hdr Host example.com
# Expect status 200 to 399
http-check expect status 200-399https://stackoverflow.com/questions/18615126
复制相似问题