如何使Docker容器看到真正的用户IP?

问题

Nginx-proxy Docker容器内部(下面有更多信息),我总是看到每个连接都有相同的IP地址:172.18.0.1(这是Nginx-proxy网络网关).例如:

Nginx.1    | www.my-site.tld 172.18.0.1 - - [28/Nov/2017:17:22:21 +0000] "GET /some/path HTTP/2.0" 200 46576 "https://www.my-site.tld/some/path" "Mozilla/5.0 (Linux; Android 4.4.2; PSP5507DUO Build/KVT49L) AppleWebKit/537.36 (KHTML,like Gecko) Chrome/61.0.3163.100 YaBrowser/17.10.0.446.00 Mobile Safari/537.36"

无论我是从外部网络,本地机器,还是从服务器(主机)本身发出请求,IP地址始终为172.18.0.1.

我需要的是看到真正的客户端IP.

试图解决

搜索了很多,并尝试了不同的解决方案,但没有一个适合我.我尝试了以下方法

>禁用firewalld(当然,在这种情况下什么都不起作用)
iptables是空的);
>使用–userland-proxy = false(没有运气);
>使用–net = host(根本不是解决方案,也不起作用).

相关链接

> https://github.com/jwilder/nginx-proxy/issues/130
> https://github.com/jwilder/nginx-proxy/issues/133

那么,有什么想法吗?似乎是iptables路由问题或内部Docker错误.无论如何,它肯定与Docker有关,因为以下显示正确的远程用户IP:

[root@server]# nc -lv 12345

[user@remote-client]$nc -vz MY.IP.ADDRESS.HERE 12345

很奇怪!

现在我将提供有关系统的完整信息,请耐心等待.

相关文章

Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Li...
1、什么是docker?答:docker是开源的应用容器引擎;开发人员把他们的应用及依赖包打包发布到容器当中。...
1、什么是namespace? 答:名称空间,作用隔离容器 2、namespace隔离有那些? 答:ipc:共享内存、消息队...
1、Docker能在非Linux平台(Windows+MacOS)上运行吗? 答:可以 2 、如何将一台宿主机的docker环境...
环境要求: IP hostname 192.168.1.1 node1 项目规划: 容器网段:172.16.10.0/24 NGINX:172.16.10.10...
文档上传地址:https://files.cnblogs.com/files/lin-strive/07-docker%E8%B7%A8%E4%B8%BB%E6%9C%BA%E7...