【发布时间】:2013-12-10 11:41:47
【问题描述】:
我在 NodeJS 中设置了一个服务器,如下图所示:
现在我想做两件事,HAProxy 似乎可以做到:
无论客户端想要访问什么服务器,都只使用一个端口。我想为所有非 SSL 使用外部端口
8080交通。 (所有 SSL 流量都应使用端口 443)在
SockJS Server和Express Server上启用 SSL。
请注意,我的所有服务器都在 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 Server(8080 内部端口)
有什么想法吗?
【问题讨论】:
-
你发现了吗?我知道 Haproxy 1.5 现在可以使用 SSL,但我遇到了麻烦。我也可以请您分享您的任何全局或默认设置。我正在使用 Juju 将 Haproxy 与 Node.js 应用程序一起部署,并且很难找到一种好的方法。我能够将连接推送到 HTTPS,但我无法保持连接足够长的时间,即使证书有效,证书也不好。只有当我直接访问服务器时才有效。
标签: node.js ssl amazon-ec2