首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >HAProxy + Nodejs + SockJS + Express + SSL

HAProxy + Nodejs + SockJS + Express + SSL
EN

Stack Overflow用户
提问于 2013-11-25 16:38:28
回答 1查看 1.2K关注 0票数 4

我在NodeJS中安装了一个服务器,如下所示:

现在,我想做两件事,这两件事似乎可以用HAProxy来做

  1. 只使用一个端口,而不管客户端想访问哪个服务器。我希望对所有非SSL通信使用外部端口8080。(所有SSL通信都应该使用端口443)
  2. SockJS ServerExpress Server上启用SSL。

请不要让我的所有服务器都运行在amazon ec2上的同一个实例上。所以我想在内部安排交通路线。

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

代码语言:javascript
运行
复制
    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内部端口)。

有什么想法吗?

EN

回答 1

Stack Overflow用户

发布于 2015-03-29 18:54:14

你的设置有点难理解(对我来说)。如果我正确理解您的目标,您希望通过SSL为您的web服务提供服务,因此端口为443。从443,连接到端口8080 (内部)。如果是这样的话,下面的配置可能就是您所要寻找的。它并不真正使用端口8080,而是直接连接到您的express后端。您实际上不需要公开端口8080 (除非有特殊的原因),因为您可以直接在前端部分中使用后端服务器。

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

代码语言:javascript
运行
复制
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
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20198294

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档