Aws Elastic Load Balancing 安全组不允许入站调用

Posted

技术标签:

【中文标题】Aws Elastic Load Balancing 安全组不允许入站调用【英文标题】:Aws Elastic Load Balancing security group not allowing inbound calls 【发布时间】:2018-11-15 06:07:50 【问题描述】:

我在 AWS 上运行以下结构:

Cloudfront -> Varnish -> nginx -> Elb -> Ec2 实例。

Varnish 和 Nginx 在同一个 ec2 实例上运行。问题是,如果我让入站流量向安全组中的任何地方开放,nginx 只能向我的 Elb 提出申请。我不想让我的 Elb 向任何地方开放,我只想让我的 Nginx 向 Elb 提出请求。如果我尝试将我的 Elb 的安全组更改为只允许调用 nginx,它不起作用。有人知道这可能是什么吗?

【问题讨论】:

Nginx 和 ELB 中的 CIDR 是什么? 抱歉,我没有收到问题。我将 Nginx 实例的安全组放在我的 Elb 安全组的入站调用上。这是行不通的。如果我向任何地方开放,它就会起作用。它们都在默认的 vpc 上。 请编辑您的问题以显示 ELB 的安全组配置。另外,Nginx 是如何指代 ELB 的——它是使用 DNS 名称还是 IP 地址?听起来它可能试图通过公共 IP 地址联系 ELB,而不是让 DNS 名称解析为私有 IP 地址。 【参考方案1】:

在我看来,您使用的是面向 Internet 的 ELB。在这种情况下,ELB DNS 将解析到公共 IP,无论您是从同一 VPC 内还是从 VPC 外解析它。引用其他安全组的安全组规则在这种情况下不适用。

这与 EC2 实例不同,EC2 实例的 DNS 将解析为 VPC 内的私有 IP 和 VPC 外的公共 IP。

两种可能的解决方案: 1. 为 Varnish/Nginx 实例分配一个弹性 IP,并在 ELB 安全组中允许该 IP。 2. 如果适合您的用例,请使用可解析为私有 IP 的内部 ELB。

【讨论】:

以上是关于Aws Elastic Load Balancing 安全组不允许入站调用的主要内容,如果未能解决你的问题,请参考以下文章

ENI 已注册到 Elastic Load Balancer - AWS

如何知道我是不是需要使用 AWS Elasticache 和 AWS Elastic Load Balancing?

AWS Cloudformation Elastic Load Balancing 账户 ID

AWS Elastic Load Balancing 和 Auto Scaling 之间的区别

无法让 https 在 Elastic Load Balancer (AWS) 上工作

Aws Elastic Load Balancing 安全组不允许入站调用