我在 Google Cloud(HTTPS)负载均衡器后面使用 nginx 进行反向代理,因此我添加了标X-Forwarded-For
头,以便后端可以提取客户端(浏览器)IP。
今天早上我注意到10.x.x.x
日志中有一个 IP,这是怎么回事?
答案1
您的日志如何解释包含多个 IP 地址的标头?如果它采用第一个 IP 地址而不是正确的 IP 地址,则这很可能是某人添加的地址向前代理而不是你的撤销代理人。
标题及其内容记录在 GCP 中设置 HTTP(S) 负载平衡文章:
X-Forwarded-For: <unverified IP(s)>, <immediate client IP>, <global forwarding rule external IP>, <proxies running in GCP>
(仅限请求)请求经过的中介附加的 IP 地址的逗号分隔列表。如果您在 GCP 内部运行将数据附加到标
X-Forwarded-For
头的代理,则您的软件必须考虑这些代理的存在和数量。负载均衡器仅提供<immediate client IP>
和<global forwarding rule external IP>
条目。列表中的所有其他条目都会在未经验证的情况下传递。
只需相应地调整您的日志即可。
答案2
我正在使用 google 云负载均衡器和 google 云 DNS 和 nginx 作为反向代理。并使用以下 nginx 配置。
set_real_ip_from 10.48.0.0/14;
set_real_ip_from 10.128.0.0/9;
set_real_ip_from 10.114.44.0/22;
real_ip_header X-Forwarded-For;
real_ip_recursive on;
它可以与 cloudfare dns 一起使用,但不能与 google cloud dns 和 AWS route 53 一起使用,这个问题已经持续一个月了。我也使用了 real_ip_header CF-Connecting-IP; 但仍然无法获取客户端 IP,我总是在 nginx 日志中看到 gcp 实例的本地 ips,DNS 是否存在问题,请让我知道如何解决这个问题。