我不能使用 Google 的 HTTP 负载平衡,因为它不支持 Web 套接字。
所以我的 NGINX 在 Google 容器引擎中运行,位于 Google Network Load Balance 后面。
当请求到达 docker 容器中的 NGINX 时,它获取的是 NODE 的 IP,而不是客户端的 ip。
2016/04/07 10:53:47 [错误] 94#0: *73 规则禁止访问,客户端:10.132.0.9
如何解决这个问题呢?
我不能使用 Google 的 HTTP 负载平衡,因为它不支持 Web 套接字。
所以我的 NGINX 在 Google 容器引擎中运行,位于 Google Network Load Balance 后面。
当请求到达 docker 容器中的 NGINX 时,它获取的是 NODE 的 IP,而不是客户端的 ip。
2016/04/07 10:53:47 [错误] 94#0: *73 规则禁止访问,客户端:10.132.0.9
如何解决这个问题呢?
在 Kubernetes 中使用网络负载均衡器时获取客户端 IP 是一个已知限制。您可以参考此问题错误以获取更新和解决方法。
您在 nginx 日志中获得“gce 网络负载均衡器”的 IP?
由于您的问题不是很清楚,我认为您的问题出在 nginx 配置中。
尝试在 nginx.conf 中添加 x-forwarded-for 选项更清晰:real_ip_header X-Forwarded-For;查看官方谷歌帖子 https://cloud.google.com/solutions/https-load-balancing-nginx