AWS 上的 Meteor 使用 Mup - 带 ELB 的 SSL

Meteor on AWS using Mup - SSL with ELB

我正在将我的 Meteor 应用程序迁移到 AWS,想使用 ACM 颁发的附加到 ELB 的 SSL 证书。 我当前的设置是:

我想完全停止使用 mup.js 配置中的反向代理,让 ELB 运行 所有 SSL 东西。问题是 ELB 无法与 Meteor 通信, 尝试了不同的 ROOT_URLs 但 none 正在工作:

我应该为 ROOT_URL 添加什么?它是否会改变接受请求的游戏规则?也就是说,如果我错了 ROOT_URL,Meteor 还能接受传入的请求吗?

Mup 配置

module.exports = {
  servers: {
    one: {
      host: 'ec2-111111.compute-1.amazonaws.com',
      username: 'ubuntu',
      pem: 'path to pem'
    }
  },
  meteor: {
    name: 'my-app',
    path: 'path',
    servers: {
      one: {}
    },
    buildOptions: {
      serverOnly: true,
    },
    env: {
      ROOT_URL: 'https://ec2-111111.compute-1.amazonaws.com',
      MONGO_URL: 'mongo url',
    },
    dockerImage: 'abernix/meteord:node-8.9.1-base',
    deployCheckWaitTime: 30,
  },
  proxy: {
    domains: 'ec2-111111.compute-1.amazonaws.com,www.ec2-111111.compute-1.amazonaws.com',
    ssl: {
      crt: './cert.pem',
      key: './key.pem'
    }
  }
};

已解决,第一个也是普遍的问题是我使用的是经典 ELB,它不支持 WebSockets 并且阻止 DDP 连接。 WebSocket 和 Sticky Sessions 附带的较新 Application Load Balancer 有所帮助。更多关于差异的信息:https://aws.amazon.com/elasticloadbalancing/details/#details

我的用例更具体的另一个问题是没有用于 ELB 健康检查的端点,我 hiding/securing 一切都落后于 basic_auth,健康检查变得 403 unauthorized 失败并且没有注册ELB 中的 EC2 实例。确保您有 returns 200 OK 的健康检查端点,并重新访问您的安全组 - 检查 inbound rules 并确保 ELB 可以访问 EC2 实例的相应端口(80、443等)。