Google Cloud Platform负载平衡器客户端原始IP /地理位置问题

问题描述

我的GCE Http负载平衡器出现问题。无法检测到正确的X-Client-Geo-Region等的地方。

由于我们需要使用ssls服务当前(3000个每天在增加)的自定义域,因此如果没有自定义ssl终止,我找不到其他方法来构建此基础架构。而且我想使用云技术来删除要维护的其他内容,否则我会在Nginx代理上安装ModSecurity

EntrypointA不能仅显示美国地区。
EntrypointB正常工作,检测到正确的区域(GB)。 Ofc绕过SSL。

                                            EntrypointB
                                                 |
                                                 V
EntrypointA -> SSL Termination Service -> GCE Loadbalancer -> GCE Instance (Http server)
                   (Nginx proxy)                     ^
                                                     |
                                                Cloud Armor

到目前为止,我已经尝试设置可以在代理中找到的每个标头,但是负载均衡器不会查看标头,或者是我不知道的标头。

我尝试过的标题

proxy_set_header X-Forwarded-For    $proxy_add_x_forwarded_for;
proxy_set_header X-Real-IP          $remote_addr;
proxy_set_header X-User-IP          $remote_addr;
proxy_set_header X-ProxyUser-Ip     $remote_addr;
proxy_set_header True-Client-IP     $remote_addr;

当我检查服务器上的标头时,它们看起来都正确(不包括地理标记的ofc)。 Forwarded-For是正确的,X-Real-IP是。

解决方法

每个doc GCP HTTP(S)LB都会在世界各地的不同位置终止TLS,以最大程度地减少延迟。因此,最好具有地理控制功能的产品是网络负载平衡器,以便在后端实例上终止TLS。

也许这种方法无法满足您的需求,所以您可能想探索Cloudflare