【发布时间】:2015-06-12 20:23:16
【问题描述】:
所以我有一个在端口 9000 上运行的 docker 应用程序,我希望只能通过 https 而不是 http 访问它,但是我似乎对亚马逊如何处理端口没有任何意义。简而言之,我只想公开端口 443 而不是 80(在负载均衡器层和实例层上),但无法做到这一点。
所以我的 Dockerfile 有:
EXPOSE 9000
我的 Dockerrun.aws.json 有:
{
"AWSEBDockerrunVersion": "1",
"Ports": [{
"ContainerPort": "9000"
}]
}
我似乎无法通过端口 9000 访问东西,但只能通过 80。
当我 ssh 进入 docker 容器正在运行的实例并使用 netstat 查找端口时,我得到端口 80 和 22 以及其他一些 udp 端口,但没有端口 9000。亚马逊到底是如何管理这个的?更重要的是,用户如何获得预期的行为?
尝试使用 ssl 和 https 也会产生同样的结果。证书已设置并映射到端口 443,我什至在 .ebextensions 配置文件中创建了一个案例来打开实例上的端口 443,但仍然没有 ssl
sslSecurityGroupIngress:
Type: AWS::EC2::SecurityGroupIngress
Properties:
GroupName: {Ref : AWSEBSecurityGroup}
IpProtocol: tcp
ToPort: 443
FromPort: 443
CidrIp: 0.0.0.0/0
让 SSL 工作的唯一方法是让负载均衡器使用端口 443 (ssl) 转发到实例端口 80(非 https),但这很荒谬。我到底如何打开实例上的 ssl 端口并将 docker 设置为使用给定的端口?有没有人成功做到这一点?
如果能提供任何帮助,我将不胜感激 - 我已经仔细研究了文档,并且已经掌握了这么多,但这只是让我感到困惑。简而言之,我只想公开端口 443 而不是 80(在负载均衡器层和实例层上),但无法做到这一点。
祝你有美好的一天
干杯
【问题讨论】:
标签: ssl amazon-web-services docker amazon-elastic-beanstalk