如何在Nginx中从AWS,Google Cloud LB和Cloud Flare获取客户端IP?

本文概述

在云中设置Web应用程序总是很有趣和令人兴奋。最近, 我启动了Site Toolbox工具, 该工具托管在Cloud Flare之后的AWS中。

我正在使用AWS应用程序负载平衡器和Nginx作为Web服务器。启用后, 我去看了access.log, 发现所有请求都被标记为来自内部(负载均衡器)IP。

如果你要分析Web服务器日志中的访问者位置, 则这不是一件好事。我意识到我丢失了或者需要做一些配置更改来还原客户端IP。

你和我一样吗?

好吧, 这是在Nginx访问日志中获取客户端IP的方法。

从AWS或Google Cloud LB获取访问者IP

  • 登录到你的Nginx Web服务器
  • 转到安装路径(默认位置/ etc / nginx)
  • 备份nginx.conf文件
  • 在http块下添加以下内容
real_ip_header X-Forwarded-For;
set_real_ip_from 0.0.0.0/0;
  • 重新启动Nginx, 你应该在access.log文件中看到访问者的IP

如果你位于Cloud Flare后面, 那么你将看到Cloud Flare IP, 而不是客户的IP, 因此你还必须执行以下操作。

从Cloud Flare获取客户端IP

Cloud Flare是出色的CDN和安全性提供商, 我绝对喜欢它。如果你像我一样使用Cloud Flare, 并且想在Web服务器日志中还原访问者IP, 则可以按照以下方法进行操作。

假设你已登录Nginx服务器

备份你的站点配置文件(通常在这里– / etc / nginx / sites-available / yourdomain)

在文件开头添加以下内容

set_real_ip_from 103.21.244.0/22;
set_real_ip_from 103.22.200.0/22;
set_real_ip_from 103.31.4.0/22;
set_real_ip_from 104.16.0.0/12;
set_real_ip_from 108.162.192.0/18;
set_real_ip_from 131.0.72.0/22;
set_real_ip_from 141.101.64.0/18;
set_real_ip_from 162.158.0.0/15;
set_real_ip_from 172.64.0.0/13;
set_real_ip_from 173.245.48.0/20;
set_real_ip_from 188.114.96.0/20;
set_real_ip_from 190.93.240.0/20;
set_real_ip_from 197.234.240.0/22;
set_real_ip_from 198.41.128.0/17;
set_real_ip_from 199.27.128.0/21;
set_real_ip_from 2400:cb00::/32;
set_real_ip_from 2606:4700::/32;
set_real_ip_from 2803:f800::/32;
set_real_ip_from 2405:b500::/32;
set_real_ip_from 2405:8100::/32;
set_real_ip_from 2c0f:f248::/32;
set_real_ip_from 2a06:98c0::/29;
real_ip_header CF-Connecting-IP;

重新启动Nginx, 你现在应该看到客户端IP。这对我有所帮助, 也希望你也对我有帮助。让我知道事情的后续。

微信公众号
手机浏览(小程序)
0
分享到:
没有账号? 忘记密码?