【F5+nginx】nginx作为反向代理,日志记录F5透传的客

2023-07-16  本文已影响0人  Bogon

一、 环境信息

客户端 ---> F5 ---> nginx(反向代理) ---> 各业务模块 upstream

二 、 业务诉求

F5 透传客户端真实ip 给到 nginx, nginx日志能记录每次请求客户端的真实ip

三、 相关操作

3.1 F5 使用 7 层代理,替代之前的 4层代理

3.2 F5中开启AutoMap,并传递X-Forwarded-For值

方式1: 在http profile中开启X-Forwarded-For


image.png

方式2:在iRule中开启X-Forwarded-For

when HTTP_REQUEST {
    HTTP::header insert "X-Forwarded-For" [IP::client_addr]
}

3.3 nginx 日志中增加 $http_x_forwarded_for 字段

$ cat nginx.conf

log_format main '$remote_addr###-###$remote_user###[$time_local]###"$request"###'
    '$status###$body_bytes_sent###"$http_referer"###'
    '"$http_user_agent"###$request_time###$http_host###$request_id###$upstream_addr###$upstream_status###$http_X_Request_Id###$scheme###$upstream_response_time###$http_x_real_ip###$request_length###$http_x_forwarded_for';
image.png

3.4 检查nginx配置文件语法并重载

nginx  -t 
nginx -s reload 

3.5 查看日志客户端ip获取情况

$ tai -f access.log

192.168.1.110###-###-###[16/Jul/2023:22:10:49 +0800]###"POST /gateway/ticket/terminal/lappAccess HTTP/1.1"###200###476###"-"###"-"###0.021###www.example.com###a75538d7f4b34b42ea9a8b29bf0aa659###10.19.42.162:10086###200###c6145657-1167-4807-acaa-1a87aaecd2ae###http###0.021###-###1171###117.152.173.5
$remote_addr:  192.168.1.110,F5 ip
$http_x_forwarded_for:  117.152.173.5,客户端真实ip

四、参考

F5后端nginx+tomcat应用如何获得用户的真实ip
http://blog.chinaunix.net/uid-25723371-id-3393531.html

javaweb项目通过F5负载,获取客户端真实ip
https://blog.csdn.net/su1573/article/details/115730260

K4816: Using the X-Forwarded-For HTTP header to preserve the original client IP address for traffic translated by a SNAT object
https://my.f5.com/manage/s/article/K4816

上一篇 下一篇

猜你喜欢

热点阅读