Docker下的lnmp环境如何获取clientIp,和主机Ip。

码强
  • 26

首先我在Mac下使用docker,docker中使用一个容器安装lnmp环境。用户访问时,在项目获取访问者Ip时,永远都是172.0.0.1之类的docker桥接的ip,拿不到客户端ip。谷歌了很久,无法解决。求解
同时也想过去宿主机的ip。谢谢

下面是NGINX配置


listen 80;
server_name www.nihao.test;

location / {
proxy_pass http://www.nihao.test;
                    proxy_set_header    Host             $host:$server_port;#转发后端口别忘了
                    proxy_set_header    X-Real-IP        $remote_addr;
                    proxy_set_header    X-Forwarded-For  $proxy_add_x_forwarded_for;
                    proxy_set_header    HTTP_X_FORWARDED_FOR $remote_addr;#关键句
                    proxy_set_header    X-Forwarded-Proto $scheme;
                    proxy_redirect      default;

    try_files $uri $uri/ $uri=404;
}
回复
阅读 4.2k
1 个回答
是老马呀
  • 582
✓ 已被采纳

我也遇到这个问题. 直接配置Nginx好像不行的. 2015到2018 这个问题好像一直存在.

通过搜索查到的相关问题

Document how to get real remote client ip for service running in container

nginx 获取客户端 IP 实现 根据配置了但无法获取到真实 IP

network_mode-docker 网络连接方式

nginx cannot get to client IP


======= 更新 2018年09月15日15:17:52 ======

MAC-只能获取容器的IP. 但是Linux上可以获取到客户端的真实IP. 问题相关资料

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
宣传栏