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

前端之家收集整理的这篇文章主要介绍了如何使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相关文章