gpt4 book ai didi

node.js - 我可以通过身份验证与 HAProxy 和 socket.io 进行粘性 session 吗?

转载 作者:搜寻专家 更新时间:2023-10-31 22:38:01 25 4
gpt4 key购买 nike

我有几个 socket.io 实例,在 HAProxy 下运行身份验证,我需要强制身份验证请求和套接字连接转到同一个实例。我已经根据 this answer to a SO question 设置了 HAProxy进行一些修改:

global
maxconn 4096 # Total Max Connections. This is dependent on ulimit
nbproc 2

defaults
mode http

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 url_param sessionId
option forwardfor # This sets X-Forwarded-For
timeout server 30000
timeout connect 4000
server server1 localhost:8081 weight 1 maxconn 1024 check
server server2 localhost:8082 weight 1 maxconn 1024 check
server server3 localhost:8083 weight 1 maxconn 1024 check

backend socket_backend
balance url_param sessionId
option forwardfor # This sets X-Forwarded-For
timeout queue 5000
timeout server 86400000
timeout connect 86400000
server server1 localhost:8081 weight 1 maxconn 1024 check
server server2 localhost:8082 weight 1 maxconn 1024 check
server server3 localhost:8083 weight 1 maxconn 1024 check

我已经尝试过 url_param(其中 sessionId 是在身份验证调用和 websocket 连接中传递的查询字符串参数)和 source 作为平衡选项,但似乎 HAProxy 只允许这些选项用于 HTTP 连接,因此忽略它们实际的 websocket 连接。结果是有时身份验证请求和套接字连接最终在不同的服务器中结束,这对我们的应用程序来说是 Not Acceptable 。

有什么方法可以实现这种期望的行为吗?

最佳答案

我以这种方式使用基于 cookie 的平衡:

backend socketio
mode http
cookie SIO insert
server sock1 127.0.0.1:8001 cookie 001
server sock2 127.0.0.1:8002 cookie 002

关于node.js - 我可以通过身份验证与 HAProxy 和 socket.io 进行粘性 session 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8149038/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com