我有一组 EC2 实例,并在它们前面有一个负载均衡器。我为 ELB 设置了一个安全组,并设置了一条入站规则以允许任何人的 HTTP 流量。
但是,我想将对 EC2 实例上特定路径(例如 /admin)的访问限制为仅来自源 ip/范围的请求。我可以通过设置入站规则来做到这一点吗?它似乎不支持这一点。还有其他方法可以实现吗?
谢谢
答案1
您不能以这种方式在安全组中设置入口规则;它们不是特定于 HTTP 的,并且对 URL 一无所知。
实现此目的的方法是设置 HTTP 服务器中的访问控制。例如,在 Apache 中,您可以在服务器配置或文件中限制对特定路径的访问,.htaccess
如下所示:
Order Deny,Allow
Deny from all
Allow from 1.2.3.4
查看文档这里适用于 Apache。Nginx 具有类似的功能。
答案2
ianjs 是正确的,您无法通过 ELB 和/或安全组完成您的要求。
在 Amazon Web Services 上,您可以访问其 AWS Marketplace 并使用商业负载平衡产品,例如Shaka Technologies 的 Ishlangu 负载均衡器 ADC或者F5 的 BIG-IP LTM。这两款产品不仅提供了限制对特定应用程序路径的访问的能力,而且还能动态地重定向和重写请求和/或响应流量。这可以使用每个供应商的流量管理控件(Ishlangu 的 uControl Script 和 F5 LTM 的 iRules)来实现。
我建议使用 ianjs 建议的 ELB 或 ELB + 反向代理(例如 Apache)中的一种。后一种解决方案会增加您的环境的延迟和复杂性,而前一种解决方案无法提供您所需的功能。