热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

HAProxy负载均衡及IP透传功能测试源地址保持原地址四层七层保持

七层IP透传测试原理同nginx通过配置将客户端ip添加到xforwordefor请求头中,具体如下:globallog127.0.0.1local
七层IP透传测试

原理同nginx通过配置将客户端ip添加到 xforwordefor 请求头中,具体如下:

globallog 127.0.0.1 local3 info chroot /usr/local/haproxypidfile /var/run/haproxy.pid maxconn 65530 user haproxygroup haproxydaemon
defaultslog global log 127.0.0.1 local3 info mode http option httplog option dontlognull option httpclose
# option forwardforretries 3 maxconn 65530 timeout http-request 10stimeout queue 1mtimeout connect 60s timeout client 2m timeout server 2m timeout http-keep-alive 10stimeout check 10sfrontend frontend_httpbind *:80option tcplogoption forwardformode httpdefault_backend backend_http
backend backend_httpmode httpbalance roundrobinserver emqx_node_1 192.168.47.11:8080 checkserver emqx_node_2 192.168.47.12:8080 checkfrontend frontend_httpsbind *:443option tcplogmode tcpdefault_backend backend_https
backend backend_httpsmode tcpbalance roundrobinserver emqx_node_3 192.168.47.11:8443 checkserver emqx_node_4 192.168.47.12:8443 check
listen haproxy_statusbind *:9800mode httpoption httplogmaxconn 200stats refresh 120slog 127.0.0.1 local0 errstats uri /haproxy-statusstats realm welcome login\haproxystats auth admin:123456stats hide-versionstats admin if TRUE

# 测试 针对 http 的请求 增加了 option forwardfor 支持 forwardfor 发现 客户端ip被添加到了 xforwardfor 请求头中

在这里插入图片描述


# 四层  


IP透传测试

haproxy四层透传ip实现方式 是通过支持proxy-protocal 协议来实现,拿到四层流量后将客户端ip信息写入到数据包中,后端服务也必须支持proxy-protocal ,否则会报错。测试如下:
haproxy 配置如下:

globallog 127.0.0.1 local3 info chroot /usr/local/haproxypidfile /var/run/haproxy.pid maxconn 65530 user haproxygroup haproxydaemon
defaultslog global log 127.0.0.1 local3 info mode http option httplog option dontlognull option httpclose
# option forwardforretries 3 maxconn 65530 timeout http-request 10stimeout queue 1mtimeout connect 60s timeout client 2m timeout server 2m timeout http-keep-alive 10stimeout check 10sfrontend frontend_httpbind *:80option tcplogoption forwardfor mode httpdefault_backend backend_http
backend backend_httpmode httpbalance roundrobinserver emqx_node_1 192.168.47.11:8080 checkserver emqx_node_2 192.168.47.12:8080 checkfrontend frontend_httpsbind *:443option tcplogmode tcpdefault_backend backend_https
backend backend_httpsmode tcpbalance roundrobin# server emqx_node_3 192.168.47.11:8443 send-proxy check#server emqx_node_4 192.168.47.12:8443 check server emqx_node_5 192.168.47.10:808 send-proxy check --四层在代理服务器后 增加 send-proxy 配置 listen haproxy_statusbind *:9800mode httpoption httplogmaxconn 200stats refresh 120slog 127.0.0.1 local0 errstats uri /haproxy-statusstats realm welcome login\haproxystats auth admin:123456stats hide-versionstats admin if TRUE

重新启动haproxy 服务

# 可以看到请求头中

在这里插入图片描述


# 备注 :

nginx 支持 proxy_protocal,因此后端服务器我们使用nginx,tomcat 不支持 如果后端服务器是tomcat 那么代理会不成功,tomcat读取请求包会报错。
nginx 安装 需要带有 realip等模块如下:–nginx版本 1.20
————————————————

原文链接:https://blog.csdn.net/zhangxm_qz/article/details/124117546


推荐阅读
  • http:my.oschina.netleejun2005blog136820刚看到群里又有同学在说HTTP协议下的Get请求参数长度是有大小限制的,最大不能超过XX ... [详细]
  • t-io 2.0.0发布-法网天眼第一版的回顾和更新说明
    本文回顾了t-io 1.x版本的工程结构和性能数据,并介绍了t-io在码云上的成绩和用户反馈。同时,还提到了@openSeLi同学发布的t-io 30W长连接并发压力测试报告。最后,详细介绍了t-io 2.0.0版本的更新内容,包括更简洁的使用方式和内置的httpsession功能。 ... [详细]
  • WebSocket与Socket.io的理解
    WebSocketprotocol是HTML5一种新的协议。它的最大特点就是,服务器可以主动向客户端推送信息,客户端也可以主动向服务器发送信息,是真正的双向平等对话,属于服务器推送 ... [详细]
  • 解决nginx启动报错epoll_wait() reported that client prematurely closed connection的方法
    本文介绍了解决nginx启动报错epoll_wait() reported that client prematurely closed connection的方法,包括检查location配置是否正确、pass_proxy是否需要加“/”等。同时,还介绍了修改nginx的error.log日志级别为debug,以便查看详细日志信息。 ... [详细]
  • 本文讨论了如何在codeigniter中识别来自angularjs的请求,并提供了两种方法的代码示例。作者尝试了$this->input->is_ajax_request()和自定义函数is_ajax(),但都没有成功。最后,作者展示了一个ajax请求的示例代码。 ... [详细]
  • Servlet多用户登录时HttpSession会话信息覆盖问题的解决方案
    本文讨论了在Servlet多用户登录时可能出现的HttpSession会话信息覆盖问题,并提供了解决方案。通过分析JSESSIONID的作用机制和编码方式,我们可以得出每个HttpSession对象都是通过客户端发送的唯一JSESSIONID来识别的,因此无需担心会话信息被覆盖的问题。需要注意的是,本文讨论的是多个客户端级别上的多用户登录,而非同一个浏览器级别上的多用户登录。 ... [详细]
  • 导航:网站首页谁有大一C语言考试题?快考试了,跪求题库有谁会做C语言的题目谁有大一C语言考试题?快考试了,跪 ... [详细]
  • ASP.NETCoreMVC的ModelBinding会将HTTPRequest数据,以映射的方式对应到参数中。基本上跟ASP.NETMVC差不多,但能Binding的来源更多了一 ... [详细]
  • 讨伐Java多线程与高并发——MQ篇
    本文是学习Java多线程与高并发知识时做的笔记。这部分内容比较多,按照内容分为5个部分:多线程基础篇JUC篇同步容器和并发容器篇线程池篇MQ篇本篇 ... [详细]
  • Skywalking系列博客1安装单机版 Skywalking的快速安装方法
    本文介绍了如何快速安装单机版的Skywalking,包括下载、环境需求和端口检查等步骤。同时提供了百度盘下载地址和查询端口是否被占用的命令。 ... [详细]
  • 本文介绍了在rhel5.5操作系统下搭建网关+LAMP+postfix+dhcp的步骤和配置方法。通过配置dhcp自动分配ip、实现外网访问公司网站、内网收发邮件、内网上网以及SNAT转换等功能。详细介绍了安装dhcp和配置相关文件的步骤,并提供了相关的命令和配置示例。 ... [详细]
  • Centos7.6安装Gitlab教程及注意事项
    本文介绍了在Centos7.6系统下安装Gitlab的详细教程,并提供了一些注意事项。教程包括查看系统版本、安装必要的软件包、配置防火墙等步骤。同时,还强调了使用阿里云服务器时的特殊配置需求,以及建议至少4GB的可用RAM来运行GitLab。 ... [详细]
  • 如何使用Java获取服务器硬件信息和磁盘负载率
    本文介绍了使用Java编程语言获取服务器硬件信息和磁盘负载率的方法。首先在远程服务器上搭建一个支持服务端语言的HTTP服务,并获取服务器的磁盘信息,并将结果输出。然后在本地使用JS编写一个AJAX脚本,远程请求服务端的程序,得到结果并展示给用户。其中还介绍了如何提取硬盘序列号的方法。 ... [详细]
  • Windows下配置PHP5.6的方法及注意事项
    本文介绍了在Windows系统下配置PHP5.6的步骤及注意事项,包括下载PHP5.6、解压并配置IIS、添加模块映射、测试等。同时提供了一些常见问题的解决方法,如下载缺失的msvcr110.dll文件等。通过本文的指导,读者可以轻松地在Windows系统下配置PHP5.6,并解决一些常见的配置问题。 ... [详细]
  • SpringMVC接收请求参数的方式总结
    本文总结了在SpringMVC开发中处理控制器参数的各种方式,包括处理使用@RequestParam注解的参数、MultipartFile类型参数和Simple类型参数的RequestParamMethodArgumentResolver,处理@RequestBody注解的参数的RequestResponseBodyMethodProcessor,以及PathVariableMapMethodArgumentResol等子类。 ... [详细]
author-avatar
手机用户2502931303
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有