我有多个作为EC2实例运行的应用程序服务器。 只有某些在其他地方运行的裸机服务器才允许与他们联系,他们的IP在httpd.conf应用服务器上明确列入白名单。
为了负载平衡的目的,我想把应用服务器移到ELB的后面,现在我已经读了X-Forwarded-For头文件,这个头文件将被从ELB转发到应用服务器,并且基于这个头文件可以允许某些IP。 我的问题是我如何设置?
目前我在应用程序服务器上的apacheconfiguration如下所示:
<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 XXXX YYYY ZZZZ AAAA </Directory>
我正在考虑使用SetEnvIf指令来允许基于X-Forwarded-For值的IP,但我不确定这一点。 我有以下的变化。 在我投入生产之前,有人可以validation这一点吗?
<VirtualHost *:80> ................... .................... <Directory /home/foo/bar> SetEnvIF X-Forwarded-For "XXXX|YYYY|AAAA" AllowIP Options Indexes Multiviews FollowSymLinks AllowOverride All Order Deny,Allow Deny from all Allow from env=AllowIP </Directory>
谢谢
最好的办法是跳过所有的Apacheconfiguration工作,并使用AWS VPC进行限制。 您可以使用ELB安全组将传入的请求限制为仅限这些IP。 之后,将EC2实例安全组设置为只接受来自ELB的HTTP连接。
这给你什么你没有与Apache的configuration麻烦寻找,它更容易和更快的pipe理,如果你需要改变的事情。