对haproxy代理流程的数据进行抓包分析

简介:

 对haproxy代理流程的数据进行抓包分析

itniaho

各模块名称以及作用

haproxy.cfg文件配置如下
 
  1. global 
  2.        maxconn 20480                 
  3.        log 127.0.0.1 local3          
  4.        chroot /var/haproxy           
  5.        uid 99                        
  6.        gid 99                        
  7.        daemon                        
  8.        nbproc 1                      
  9.        pidfile /var/run/haproxy.pid  
  10.        ulimit-n 65535                
  11. defaults 
  12.         log global 
  13.         mode http           
  14.         maxconn 20480       
  15.         option httplog      
  16.         option httpclose    
  17.         option dontlognull  
  18.         option forwardfor   
  19.         option redispatch   
  20.         option abortonclose 
  21.         stats refresh 30    
  22.         retries 3           
  23.         balance roundrobin  
  24.         contimeout 5000     
  25.         clitimeout 50000    
  26.         srvtimeout 50000    
  27.         timeout check 2000  
  28.  
  29. listen  admin_status                  
  30.         bind 0.0.0.0:65532           
  31.         mode http                    
  32.         log 127.0.0.1 local3 err     
  33.         stats refresh 5s             
  34.         stats uri /admin?stats       
  35.         stats realm itnihao\ itnihao 
  36.         stats auth admin:admin       
  37.         stats auth admin1:admin1     
  38.         stats hide-version           
  39.         stats admin if TRUE          
  40.         errorfile 403 /etc/haproxy/errorfiles/403.http 
  41.         errorfile 500 /etc/haproxy/errorfiles/500.http 
  42.         errorfile 502 /etc/haproxy/errorfiles/502.http 
  43.         errorfile 503 /etc/haproxy/errorfiles/503.http 
  44.         errorfile 504 /etc/haproxy/errorfiles/504.http 
  45.  
  46.         capture request  header Host           len 40 
  47.         capture request  header Content-Length len 10 
  48.         capture request  header Referer        len 200 
  49.         capture response header Server         len 40 
  50.         capture response header Content-Length len 10 
  51.         capture response header Cache-Control  len 8 
  52. listen  site_status 
  53.         bind 0.0.0.0:1081                     
  54.         mode http                             
  55.         log 127.0.0.1 local3 err              
  56.         monitor-uri /site_status              
  57.         acl site_dead nbsrv(server_web) lt 2  
  58.         monitor fail if site_dead 
  59.  
  60. frontend  http_80_in 
  61.         bind 0.0.0.0:80   
  62.         mode http         
  63.         log global        
  64.         option httplog   
  65.         option httpclose  
  66.         option forwardfor 
  67.         acl itnihao_web hdr_reg(host) -i ^(www.itnihao.cn|ww1.itnihao.cn)$ 
  68.         acl itnihao_blog hdr_dom(host) -i blog.itnihao.cn 
  69.         use_backend  server_web  if itnihao_web 
  70.         use_backend  server_blog if itnihao_blog 
  71.         default_backend server_bbs 
  72.  
  73. backend server_web 
  74.         mode http           
  75.         balance roundrobin  
  76.         cookie SERVERID     
  77.         option httpchk GET /index.html 
  78.         server web1 192.168.16.2:80 cookie web1 check inter 1500 rise 3 fall 3 weight 1 
  79.         server web2 192.168.16.3:80 cookie web2 check inter 1500 rise 3 fall 3 weight 2 
  80.  
  81. backend server_bbs 
  82.         mode http          
  83.         balance roundrobin 
  84.         cookie SERVERID    
  85.         option httpchk GET /index.html 
  86.         server bbs1 192.168.16.2:80 cookie bbs1 check inter 1500 rise 3 fall 3 weight 1 
  87.         server bbs2 192.168.16.3:80 cookie bbs2 check inter 1500 rise 3 fall 3 weight 2 

客户端192.168.16.90访问http://ww1.itnihao.cn

Haproxy的日志如下,可以看到,负载均衡到web2web1上面去了

详细日志如下所示

Jul  2 04:09:19 localhost haproxy[30015]: 192.168.16.90:4329 [02/Jul/2012:04:09:19.876] http_80_in server_web/web2 31/0/10/0/44 200 271 - - ---- 0/0/0/0/0 0/0 "GET / HTTP/1.1"

Jul  2 04:09:19 localhost haproxy[30015]: 192.168.16.90:4329 [02/Jul/2012:04:09:19.876] http_80_in server_web/web2 31/0/10/0/44 200 271 - - ---- 0/0/0/0/0 0/0 "GET / HTTP/1.1"

Jul  2 04:09:19 localhost haproxy[30015]: 192.168.16.90:4329 [02/Jul/2012:04:09:19.876] http_80_in server_web/web2 31/0/10/0/44 200 271 - - ---- 0/0/0/0/0 0/0 "GET / HTTP/1.1"

Jul  2 04:09:19 localhost haproxy[30015]: 192.168.16.90:4329 [02/Jul/2012:04:09:19.876] http_80_in server_web/web2 31/0/10/0/44 200 271 - - ---- 0/0/0/0/0 0/0 "GET / HTTP/1.1"

Jul  2 04:09:19 localhost haproxy[30015]: 192.168.16.90:4329 [02/Jul/2012:04:09:19.876] http_80_in server_web/web2 31/0/10/0/44 200 271 - - ---- 0/0/0/0/0 0/0 "GET / HTTP/1.1"

Jul  2 04:09:19 localhost haproxy[30015]: 192.168.16.90:4329 [02/Jul/2012:04:09:19.876] http_80_in server_web/web2 31/0/10/0/44 200 271 - - ---- 0/0/0/0/0 0/0 "GET / HTTP/1.1"

Jul  2 04:09:22 localhost haproxy[30015]: 192.168.16.90:4330 [02/Jul/2012:04:09:21.985] http_80_in server_web/web1 6/0/35/27/70 200 271 - - ---- 0/0/0/0/0 0/0 "GET / HTTP/1.1"

Jul  2 04:09:22 localhost haproxy[30015]: 192.168.16.90:4330 [02/Jul/2012:04:09:21.985] http_80_in server_web/web1 6/0/35/27/70 200 271 - - ---- 0/0/0/0/0 0/0 "GET / HTTP/1.1"

Jul  2 04:09:22 localhost haproxy[30015]: 192.168.16.90:4330 [02/Jul/2012:04:09:21.985] http_80_in server_web/web1 6/0/35/27/70 200 271 - - ---- 0/0/0/0/0 0/0 "GET / HTTP/1.1"

Jul  2 04:09:22 localhost haproxy[30015]: 192.168.16.90:4330 [02/Jul/2012:04:09:21.985] http_80_in server_web/web1 6/0/35/27/70 200 271 - - ---- 0/0/0/0/0 0/0 "GET / HTTP/1.1"

Jul  2 04:09:22 localhost haproxy[30015]: 192.168.16.90:4330 [02/Jul/2012:04:09:21.985] http_80_in server_web/web1 6/0/35/27/70 200 271 - - ---- 0/0/0/0/0 0/0 "GET / HTTP/1.1"

Jul  2 04:09:22 localhost haproxy[30015]: 192.168.16.90:4330 [02/Jul/2012:04:09:21.985] http_80_in server_web/web1 6/0/35/27/70 200 271 - - ---- 0/0/0/0/0 0/0 "GET / HTTP/1.1"

haproxy 192.168.16.22上面抓包【勘误】

(2012-07-31修改此处,原文是“在web2上面抓包”,其实下面的数据是在3台机器上面的,即haproxy,web1,web2上面抓包的结果分析

查看抓包数据如下

 客户端192.168.16.90首先向ww1.itnihao.cn(192.168.16.22)发送请求,haproxy代理服务器192.168.16.22收到请求,根据以下的配置文件的则,将请求用调度算法roundrobin转发给后端web2,即192.168.16.3

frontend  http_80_in

       bind 0.0.0.0:80   

       mode http         

       log global        

       option httplog    

       option httpclose  

       option forwardfor 

       acl  itnihao_web  hdr_reg(host)  -i  ^(www.itnihao.cn|ww1.itnihao.cn)$

       use_backend  server_web  if  itnihao_web

   

backend server_web

       mode http

       balance roundrobin

       cookie SERVERID

       option httpchk GET /index.html 

       server  web1  192.168.16.2:80  cookie  web1 check inter 1500 rise 3 fall 3 weight 1

       server  web2  192.168.16.3:80  cookie  web2 check inter 1500 rise 3 fall 3 weight 2

可以看到,haproxy会将请求的www.itnihao.cn转发给192.168.16.3,且标记客户端的ip,如192.168.16.3有多个基于域名的虚拟主机,可以通过请求的域名来正确的识别到虚拟主机,这点无需担心

ip转发的选项是option forwardfor 转发过来的ip,如此,则端服务器可以获取到真实的客户端ip,

 192.168.16.3响应haproxy的请求,将数据index.html提供给haproxy192.168.16.22

 代理过程完成,192.168.16.22将index.html数据发送给用户端,用户端192.168.16.90完成此次的服务器请求,对用户来说是完全透明的。

同理,代理将请求转发给192.168.16.2,叙述过程不再重复,从抓包数据的结果可以看到

 以上内容为本人对haproxy的一些理解,如有误差,欢迎各位指正!



本文转自it你好 51CTO博客,原文链接:http://blog.51cto.com/itnihao/916464,如需转载请自行联系原作者

相关文章
|
4月前
|
Web App开发 安全 应用服务中间件
Burpsuite工具的代理抓包功能实验
Burpsuite工具的代理抓包功能实验
51 1
|
1月前
|
监控 Apache
HAProxy的高级配置选项-Web服务器状态监测
这篇文章介绍了HAProxy的高级配置选项,特别是如何进行Web服务器状态监测,包括基于四层传输端口监测、基于指定URI监测和基于指定URI的request请求头部内容监测三种方式,并通过实战案例展示了配置过程和效果。
51 8
HAProxy的高级配置选项-Web服务器状态监测
|
5月前
|
数据采集 安全 数据安全/隐私保护
代理IP的基本原理是什么?使用IP需要注意哪些事项?
代理IP通过代理服务器转发用户请求,隐藏真实IP,实现隐私保护和数据采集。使用代理IP需注意:选择有高质量、稳定服务和专业技术支持的代理服务商;避免频繁使用同一代理IP;确保代理IP的高匿名性;并遵守网络道德和法律法规。
|
4月前
|
安全 数据安全/隐私保护
使用了代理IP之后软件或网站还是拒绝访问的原因分析
代理IP使用后仍被拒访可能因无效IP、网站反代理机制、设置错误、网络问题或软件设置不当。检查代理有效性,确认网站限制,修正设置,确保网络稳定,及调整软件代理配置是解决之道。遇到问题需针对性排查。
|
5月前
|
API 数据库 Python
多线程收集/验证IP从而搭建有效IP代理池
多线程收集/验证IP从而搭建有效IP代理池
一日一技:为mitmproxy设置上游代理
一日一技:为mitmproxy设置上游代理
864 0
|
数据采集 运维 大数据
巨量代理代理IP测试,最新代理IP质量测试
希望这篇测试文章,能够帮到那些在观望HTTP代理哪家强的人。
|
存储 监控 数据可视化
Zabbix-客户端部署全过程
客户端部署全过程
292 0
|
安全 Android开发 网络虚拟化
APP安全——抓包代理工具的设置
APP安全——抓包代理工具的设置
363 0
|
网络协议 数据可视化 NoSQL
Envoy架构概览(8):统计,运行时配置,追踪和TCP代理
Envoy架构概览(8):统计,运行时配置,追踪和TCP代理
下一篇
无影云桌面