HAPROXY记录本机访问IP异常:为何记录Docker网关IP而非WiFi IP?
问题:本机访问Docker部署的HAProxy时无法记录真实WiFi IP
环境配置
Docker Compose的HAProxy端口配置
我在Docker Compose的HAProxy服务中使用长语法指定端口模式:
services: haproxy: ports: - target: 80 published: 9763 protocol: tcp mode: host
HAProxy后端配置
在HAProxy的backend段添加了以下配置:
backend api option forwardfor http-request add-header X-Client-IP %[src] http-request add-header X-FrontEnd-IP %[dst]
启动命令与本机IP信息
- 执行命令启动容器:
docker stack deploy -c docker-compose.yml mystack - 执行
hostname -I得到本机所有IP:
$ hostname -I 192.168.0.102 172.18.0.1 172.17.0.1 172.19.0.1 192.168.49.1
- 本机WiFi网卡IP为
192.168.0.102 - 本机可通过三个地址访问应用:
http://172.18.0.1:9763/、http://127.0.0.1:9763/、http://192.168.0.102:9763/
访问测试结果
本机访问时的请求头
通过上述三个URL访问Django应用时,Python代码获取到的请求头如下:
'HTTP_X_CLIENT_IP' : '172.18.0.1,172.18.0.1' 'HTTP_X_FRONTEND_IP' : '172.18.0.9' 'HTTP_X_FORWARDED_FOR' : '172.18.0.1'
由于我记录'HTTP_X_FORWARDED_FOR',因此172.18.0.1被存入数据库。
平板访问时的请求头
平板与本机连接同一路由器,仅能通过http://192.168.0.102:9763/login访问应用,此时请求头如下:
'HTTP_X_CLIENT_IP' : '192.168.0.103,192.168.0.103' 'HTTP_X_FRONTEND_IP' : '172.18.0.9' 'HTTP_X_FORWARDED_FOR' : '192.168.0.103'
192.168.0.103被存入数据库。
疑问
- 本机WiFi网卡IP为
192.168.0.102,但记录的却是172.18.0.1,为何不能像平板那样记录真实IP? - 本机访问时请求头中为何会添加
172.18.0.1? - 如何修改才能在本机访问时记录
192.168.0.102?
内容的提问来源于stack exchange,提问作者MsA
相关产品推荐
相关产品推荐

