我有多个作为 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 配置费心,如果您需要更改某些内容,管理起来也更轻松、更快捷。