gpt4 book ai didi

node.js - HAProxy + Nodejs + SockJS + Express + SSL

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

我在 NodeJS 中设置了一个服务器,如下图所示:

enter image description here

现在我想做的两件事似乎可以通过 HAProxy 实现:

  1. To only use one port no matter what server a client wants to access. I want to use the external port 8080 for all non SSL traffic. (All SSL traffic should use the port 443)

  2. Enable SSL on the SockJS Server and the Express Server.

请注意,我所有的服务器都在 amazon ec2 上的同一个实例上运行。所以我想在内部路由流量。

到目前为止,这是我的 haproxy.cfg:

    mode http
# Set timeouts to your needs
timeout client 10s
timeout connect 10s
timeout server 10s

frontend all 0.0.0.0:8080
mode http
timeout client 120s

option forwardfor
# Fake connection:close, required in this setup.
option http-server-close
option http-pretend-keepalive

acl is_sockjs path_beg /echo /broadcast /close
acl is_stats path_beg /stats

use_backend sockjs if is_sockjs
use_backend stats if is_stats
default_backend express


backend sockjs
# Load-balance according to hash created from first two
# directories in url path. For example requests going to /1/
# should be handled by single server (assuming resource prefix is
# one-level deep, like "/echo").
balance uri depth 2
timeout server 120s
server srv_sockjs1 127.0.0.1:8081

backend express
balance roundrobin
server srv_static 127.0.0.1:8008

backend stats
stats uri /stats
stats enable

无法弄清楚如何将 SSL 和流量路由到 TCP 服务器(8080 内部端口)

有什么想法吗?

最佳答案

您的设置有点难以理解(对我而言)。如果我正确理解您的目标,您希望通过 SSL 因此端口 443 为您的 Web 服务提供服务。然后从 443 连接到端口 8080(内部)。如果是这种情况,那么以下配置可能就是您要找的。它并没有真正使用端口 8080,而是直接连接到您的 express 后端。您真的不需要公开端口 8080(除非您有特殊原因),因为您可以直接在前端部分使用后端服务器。

请注意,这仅适用于 HAProxy 1.5+,如果您使用的是旧版本的 HAProxy,您应该在 SSL 连接到达 HAProxy 之前放置一些隧道(但我强烈建议使用 1.5,因为它使您的设置不那么复杂)

frontend ssl
bind *:443 ssl crt /path/to/cert.pem ca-file /path/to/cert.pem
timeout client 120s

option forwardfor
# Fake connection:close, required in this setup.
option http-server-close
option http-pretend-keepalive

acl is_sockjs path_beg /echo /broadcast /close
acl is_stats path_beg /stats

use_backend sockjs if is_sockjs
use_backend stats if is_stats
default_backend express

关于node.js - HAProxy + Nodejs + SockJS + Express + SSL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20198294/

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