概述
环境
服务器ip | 用途 |
---|---|
192.168.233.17 | haproxy服务器 |
192.168.233.196 | 后端web服务主机 |
192.168.233.195 | 客户机 |
目标
后端web服务可以记录客户端的真实IP地址
四层透传
haproxy配置
listen test
bind 0.0.0.0:80
log global
mode tcp #因为是4层,所以填的tcp
server web1 192.168.233.196:80 send-proxy weight 1 check #加上send-proxy
nginx配置
在访问日志中通过访问变量$proxy_protocol_addr记录透传过来的客户端IP
http {
log_format main '$remote_addr - $remote_user [$time_local] "$request" "$proxy_protocol_addr"';
access_log /var/log/nginx/access.log main;
server {
listen 80 proxy_protocol; #启用此项,将无法直接访问此网站,只能通过四层代理访问
...
}
....
}
测试访问结果
root@ubuntu-195:~# curl 192.168.233.17
web server
#查看web服务器nginx日志
root@ubuntu-196:/etc/nginx# tail -f /var/log/nginx/access.log
192.168.233.17 - - [19/Sep/2021:22:06:17 +0800] "GET / HTTP/1.1" "192.168.233.195"
四层IP透传成功。
七层透传
haproxy配置
defaults
option http-keep-alive
option forwardfor #默认值
mode http
....
listen test
bind 0.0.0.0:80
log global
mode http
server web1 192.168.233.196:80 send-proxy weight 1 check
....
....
nginx配置
#$proxy_add_x_forwarded_for: 包括客户端IP和中间经过的所有代理的IP
#$http_x_forwarded_For: 只有客户端IP
http {
log_format main '$remote_addr - $remote_user [$time_local] "$request" "$proxy_protocol_addr" "$proxy_add_x_forwarded_for" "$http_x_forwarded_For"';
access_log /var/log/nginx/access.log main;
....
}
测试访问结果
root@ubuntu-195:~# curl 192.168.233.17
web server
#查看web服务器nginx日志
root@ubuntu-196:/etc/nginx# tail -f /var/log/nginx/access.log
192.168.233.17 - - [19/Sep/2021:23:10:27 +0800] "GET / HTTP/1.1" "" "192.168.233.195, 192.168.233.17" "192.168.233.195"
七层IP透传成功。
最后
以上就是土豪皮卡丘为你收集整理的haproxy + nginx 实现四和七层IP透传环境目标七层透传的全部内容,希望文章能够帮你解决haproxy + nginx 实现四和七层IP透传环境目标七层透传所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复