Ale*_*ber 3 timeout haproxy websocket
在 CentOS 7 Linux 上,我在通过 FastCGI 为 Wordpress 站点提供服务的Jetty 9前面成功使用了 HAProxy 1.5.14 。
它工作得非常好,但是对于同一网站上的 HTML5/WebSocket 游戏,WebSocket 连接到/ws/URL 的客户端和服务器超时需要更高的时间。
所以我将/etc/haproxy/haproxy.cfg文件修改为以下内容:
global
chroot /var/lib/haproxy
pidfile /var/run/haproxy.pid
maxconn 4000
user haproxy
group haproxy
daemon
tune.ssl.default-dh-param 2048
defaults
mode http
log global
option httplog
option dontlognull
option http-server-close
option forwardfor except 127.0.0.0/8
option redispatch
retries 3
timeout http-request 10s
timeout queue 1m
timeout connect 10s
timeout client 1m # HOW TO INCREASE FOR /ws/ ?
timeout server 1m # HOW TO INCREASE FOR /ws/ ?
timeout http-keep-alive 10s
timeout check 10s
maxconn 3000
frontend public
bind 144.76.184.151:80
bind 144.76.184.151:443 ssl crt /etc/pki/tls/certs/slova.de.pem
acl websocket_url path_end /ws/
#timeout client 60m if websocket_url # SYNTAX ERROR
use_backend ws-jetty if websocket_url
default_backend jetty
backend jetty
server domain 127.0.0.1:8080 send-proxy
backend ws-jetty
timeout client 60m # IS IGNORED HERE
timeout server 60m
server domain 127.0.0.1:8080 send-proxy
Run Code Online (Sandbox Code Playgroud)
当我设置
timeout client 60m
timeout server 60m
Run Code Online (Sandbox Code Playgroud)
在defaults部分中,我的 WebSocket 游戏可以根据需要运行,但我不希望通常的 HTTP 连接超时 1 小时。
当我将该部分放入backend ws-jetty然后打印警告时,该超时客户端不是后端选项,因此被忽略。
当我尝试该行时,timeout client 60m if websocket_url会报告语法错误。
如果一些长期存在的会话与短期存在的会话混合在一起(例如:WebSocket 和 HTTP),则值得考虑
timeout tunnel,它会覆盖timeout client和timeout server隧道,以及timeout client-fin半封闭连接。http://cbonte.github.io/haproxy-dconv/configuration-1.5.html#4.2-timeout%20client
当timeout tunnel在连接上处于活动状态时——这对于 Web 套接字会自动发生,因为一旦连接升级到 Web 套接字,HTTP 逻辑就会分离——大多数其他超时不再为该连接触发。
请注意,这是一个空闲计时器,而不是会话计时器。计时器由来自任一方向的流量重置。您可以将其应用于后端或默认部分。它应该只在适当的时候由 HAProxy 实际使用,但是将它放在需要它的特定后端可以说是最佳实践。
| 归档时间: |
|
| 查看次数: |
7390 次 |
| 最近记录: |