在 Apache 配置中允许 ELB 后面有多个 IP

在 Apache 配置中允许 ELB 后面有多个 IP

我有多个作为 EC2 实例运行的应用程序服务器。只有某些在其他地方运行的裸机服务器才允许联系它们,并且它们的 IP 在 httpd.conf @the application servers 中明确列入白名单。

我想将应用服务器移到 ELB 后面以实现负载平衡,现在我已了解了 X-Forwarded-For 标头,该标头将从 ELB 转发到应用服务器,并可基于该标头允许某些 IP。我的问题是如何进行设置?

目前我的应用服务器上的 apache 配置如下:

<VirtualHost *:80>
    ServerAdmin  [email protected]
    ServerName   bar.foo.in
    DocumentRoot /home/foo/bar
    <Directory /home/foo/bar>
            Options Indexes Multiviews FollowSymLinks
            AllowOverride All
            Order Deny,Allow
            Deny from all
            Allow from X.X.X.X Y.Y.Y.Y Z.Z.Z.Z A.A.A.A
    </Directory>

我正在考虑使用 SetEnvIf 指令来允许基于 X-Forwarded-For 值的 IP,但我对此不太确定。我考虑进行以下更改。有人可以在我将其投入生产之前验证这一点吗?

<VirtualHost *:80>
 ................... 
 ....................
<Directory /home/foo/bar>
        SetEnvIF X-Forwarded-For "X.X.X.X|Y.Y.Y.Y|A.A.A.A" AllowIP 
        Options Indexes Multiviews FollowSymLinks
        AllowOverride All
        Order Deny,Allow
        Deny from all
        Allow from env=AllowIP
</Directory>

谢谢

答案1

最好的方法是跳过所有 Apache 配置工作并使用 AWS VPC 进行限制。您可以使用 ELB 安全组将传入请求限制为仅这些 IP。之后将 EC2 实例安全组设置为仅接受来自 ELB 的 HTTP 连接。

这可以满足您的需求,而且无需为 Apache 配置费心,如果您需要更改某些内容,管理起来也更轻松、更快捷。

相关内容