如何将远程(用户)IP 从 nginx 传递到托管在 google 容器引擎上的 Rails?

Posted

技术标签:

【中文标题】如何将远程(用户)IP 从 nginx 传递到托管在 google 容器引擎上的 Rails?【英文标题】:How do I pass the remote (users) IP from nginx to Rails hosted on google container engine? 【发布时间】:2016-11-22 16:07:49 【问题描述】:

我在 nginx 上运行乘客并有一个 rails 应用程序服务器。无法获取用户的远程IP..如何获取用户的IP?

我使用nginx.conf.erb,如果需要我可以修改它..

问题(我认为)出现在 google 容器引擎中,它在我的应用程序前面创建了一个负载均衡器。使 request.remote_ip 只获得本地 kubernetes 集群 IP 而不是远程 ip。

【问题讨论】:

Rails: Get Client IP address的可能重复 @Jonathan nope -- 这是特定于 kubernetes 和/或谷歌容器引擎的 【参考方案1】:

这应该很简单,事实上你不必从 Nginx 传递它,它总是作为 headers 出现在 rails 中。您可以通过以下方式访问它,

request.remote_ip

【讨论】:

这给了我 google 容器引擎上 load_balancer 的 ip,而不是用户的 ip

以上是关于如何将远程(用户)IP 从 nginx 传递到托管在 google 容器引擎上的 Rails?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 C++/CLI Wrapper 将变量参数从托管传递到非托管?

如何将本地文件复制到远程服务器

如何将数据从非托管应用程序传递到 C# COM DLL

Nginx proxy_set_header 理解

如何在负载均衡器 Laravel 后面的 nginx 中将远程 IP 地址列入白名单

如何远程复制另一台Linux服务器