首先我在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;
}
我也遇到这个问题. 直接配置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. 问题相关资料