我想知道使用 Elastic Load Balancing (ELB) 时客户端的 IP 地址。如何配置在 Ubuntu 16.04 实例上运行的 Apache 服务器,才能记录位于负载均衡器后的客户端的公有 IP 地址?

您可以按照如下说明配置 Apache2 Web 服务器

1. 在 Ubuntu 16.04 实例上安装 Apache2。

sudo apt-get install apache2 -y

2. 在 Ubuntu 实例上安装 mod_remoteip。

sudo a2enmod remoteip

3. 重新启动 Apache2 以激活配置。

sudo service apache2 restart

4. 在 /etc/apache2/apache2.conf 编辑 Ubuntu 的 Apache 配置,如下所示:

sudo vim /etc/apache2/apache2.conf

        将此行添加到配置文件。

RemoteIPHeader X-Forwarded-For

        找到以 LogFormat 开始的匹配部分。修改此行:

LogFormat "%h %l %u %t \"%r\" %>s %O \"%{Referer}i\" \"%{User-Agent}i\"" combined

        为:(配置文件中用 %a 替换 %h)

LogFormat "%a %l %u %t \"%r\" %>s %O \"%{Referer}i\" \"%{User-Agent}i\"" combined

5. 应用更改,保存配置文件然后重启 Ubuntu 实例上的 Apache2。

sudo systemctl restart apache2.service

6. 在 Ubuntu 实例上使用此命令验证客户端 IP 已记入日志,从其他实例发出请求:

tail -f /var/log/apache2/access.log

        来自其他客户端机器/实例的请求:

curl -vo /dev/null http://<elb_dns_name>

7. 验证客户端公有 IP 或弹性 IP 已显示在 access.log 文件中。


此页面对您有帮助吗? |

返回 AWS Support 知识中心

需要帮助? 请访问 AWS 支持中心

发布时间:2016 年 12 月 7 日

更新时间:2018 年 4 月 25 日