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

时间:2018-03-23 08:17:33

标签: amazon-web-services ssl meteor elastic-load-balancer meteor-up

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

  • 使用ACM SSL证书的ELB(验证负载均衡和HTTPS正在EC ubuntu机器内的简单HTTP服务器上运行)
  • 使用Mup在EC2计算机上部署Meteor up(请参阅我的mup.js,它可以很好地使用文件系统中可用的SSL证书)

我想完全停止使用mup.js配置中的反向代理,让ELB运行所有SSL内容。问题是ELB无法与Meteor通信, 尝试了不同的ROOT_URL但没有一个正在运行:

我应该为ROOT_URL提供什么?是否接受请求改变游戏规则?即如果我有错误的ROOT_URL,Meteor仍然可以接受传入的请求吗?

  • Mup版本:1.4.3
  • 流星版:1.6.1

Mup config

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'
    }
  }
};

1 个答案:

答案 0 :(得分:0)

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

我的用例更具体的另一个问题是没有ELB运行状况检查的终点,我隐藏/保护了basic_auth后面的所有内容,运行状况检查导致403 unauthorized失败并且没有在ELB中注册EC2实例。确保您有返回200 OK的运行状况检查端点,并重新访问您的安全组 - 检查inbound rules并确保ELB可以访问EC2实例(80,443等)的相应端口。