AWS 上的 Meteor 使用 Mup - 带 ELB 的 SSL
Meteor on AWS using Mup - SSL with ELB
我正在将我的 Meteor 应用程序迁移到 AWS,想使用 ACM 颁发的附加到 ELB 的 SSL 证书。
我当前的设置是:
- 带有 ACM SSL 证书的 ELB(已验证负载平衡和 HTTPS 正在 EC ubuntu 机器内的简单 HTTP 服务器上运行)
- Meteor up 使用 Mup 部署在 EC2 机器上(请参阅我的
mup.js
,它与文件系统中物理可用的 SSL 证书配合得很好)
我想完全停止使用 mup.js
配置中的反向代理,让 ELB 运行 所有 SSL 东西。问题是 ELB 无法与 Meteor 通信,
尝试了不同的 ROOT_URLs 但 none 正在工作:
- 具有 HTTP 和 HTTPS 的 EC2 弹性 IP
(即 ROOT_URL: 'https://my-ec2-elastic-ip.com', ROOT_URL: 'http://my-ec2-elastic-ip.com')
- 带 HTTP 和 HTTPS 的 ELB 域名
我应该为 ROOT_URL 添加什么?它是否会改变接受请求的游戏规则?也就是说,如果我错了 ROOT_URL,Meteor 还能接受传入的请求吗?
- Mup 版本:1.4.3
- 流星版本:1.6.1
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等)。
我正在将我的 Meteor 应用程序迁移到 AWS,想使用 ACM 颁发的附加到 ELB 的 SSL 证书。 我当前的设置是:
- 带有 ACM SSL 证书的 ELB(已验证负载平衡和 HTTPS 正在 EC ubuntu 机器内的简单 HTTP 服务器上运行)
- Meteor up 使用 Mup 部署在 EC2 机器上(请参阅我的
mup.js
,它与文件系统中物理可用的 SSL 证书配合得很好)
我想完全停止使用 mup.js
配置中的反向代理,让 ELB 运行 所有 SSL 东西。问题是 ELB 无法与 Meteor 通信,
尝试了不同的 ROOT_URLs 但 none 正在工作:
- 具有 HTTP 和 HTTPS 的 EC2 弹性 IP (即 ROOT_URL: 'https://my-ec2-elastic-ip.com', ROOT_URL: 'http://my-ec2-elastic-ip.com')
- 带 HTTP 和 HTTPS 的 ELB 域名
我应该为 ROOT_URL 添加什么?它是否会改变接受请求的游戏规则?也就是说,如果我错了 ROOT_URL,Meteor 还能接受传入的请求吗?
- Mup 版本:1.4.3
- 流星版本:1.6.1
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等)。