haproxy实现Discuz!动静分离

haproxy工作在用户空间(工作在第七层),能够识别应用层(http报文)的数据。所以,可以根据用户的请求类别的不同向不同服务群组调度的。也就是haproxy可以识别http报文的请求信息,做访问控制;

比如:

一组服务器处理动态资源:jsp、php

一组服务器处理静态资源:如:用户请求的是图片等

不让动态服务器响应静态资源。jsp或php页面都是由应用程序服务器执行之后来响应的。所以通常情况下,为了提高应用程序服务器处理动态页面的效率。通常要对用户的请求做动静分离。使用七层调度器把用户的请求调度到指定的服务器。还有静态资源是可以缓存的,这样还可以提高网站的响应速度。借助CDN网络,把静态资源缓存到用户的家门口。。。。。。

haproxy通过acl来做访问控制的。格式如下:

  acl <aclname> <criterion> [flags] [operator] <value> ... 
      acl列表名称 测试标准    标志位   测试条件表达式

一、配置文件如下:

frontend main
    bind :80
    acl  url_static  path_beg  -i /static  /images -----> 使用acl关健字定义访问控制列表:url_static.匹配该访问列表的条件是:用户请求的url是以:/static 或 /images 开头的url.
    acl  url_static  path_end  -i .jpg .gif .png ------> 访问控制列表url_static的规则是:从用户请求资源的url的后面做字符匹配,匹配规则是:以.jpg 或 .gif 或 .png 结尾的url都被匹配到。
    use_backend   static  if url_static   ------->对用户的请求做acl访问控制,如果符合 url_static 定义的访问控制规则的话,就把这些请求调度到 static 标识的上游服务中。
    default_backend webservers   ------> 没有被 url_static 访问控制列表匹配到的请求都被调度到 webservers标识的上游服务器。
    option forwardfor  except 127.0.0.0/8

backend    webservers   ------> 定义上游服务器 webservers 来响应用户的动态请求
    balance   roundrobin
    rspadd X-Via:app  ----> 自定义一个响应首部信息。查看http报文就可以知道该请求是由那组后端服务器响应的。
    cookie    webserver insert nocache
    option    httpchk
    server s1 172.16.0.99 cookie s1 check port 80  weight 1
    server b1 127.0.0.1:8080 backup

    stats  enable   --------> haproxy 的状态页
    stats  hide-version
    stats  uri /haproxy?stats
    stats  scope .
    stats  realm  HAPorxy\ Statistics
    stats  auth   admin:admin
    stats  admin  if TRUE
backend  static   ---------> 定义上游服务器 static 来响应用户的静态请求
    balance   roundrobin
    rspadd X-Via:static    -----> 自定义一个响应首部信息。查看http报文就可以知道该请求是由那组后端服务器响应的。
    option    httpchk
   server s2 172.16.0.88 cookie s2 check port 80  weight 1

访问测试:

1、查看动态页面由哪组服务器响应的?

说明:

从上图可以看出,动态页面由webservers这组服务器响应的。

2、查看静态页面由哪组服务器响应?

再查看

说明:

从上图知道,用户请求的URL以.jpg或.png或.js,都被haproxy调度到 static这组服务器

2、查看用户请求js模式表,haproxy是否也把该请求调度到static服务器组

说明:

从http报文分析,用户请求js样式表属于向服务发起动态请求,所以不应该把该请求定向到static服务器组。所以要进行haproxy的acl进行修改。

二、修改haproxy的配置文件

frontend main
    bind :80
    acl  url_static  path_beg  -i /static/images  
    acl  url_static  path_end  -i .jpg .gif .png
    use_backend   static  if url_static
    default_backend webservers
    option forwardfor  except 127.0.0.0/8

访问测试

1、查看用户请求js

2、查看请求图片资源

再查看

再查看

说明:

通过上述修改后,已经能够实现动静分离了

时间: 2024-08-07 04:31:32

haproxy实现Discuz!动静分离的相关文章

HAproxy负载均衡动静分离实现及配置详解

 HAproxy负载均衡动静分离实现及配置详解 HAproxy的介绍 HAProxy提供高可用性.负载均衡以及基于TCP和HTTP应用的代理,支持虚拟主机,它是免费.快速并且可靠的一种解决方案.HAProxy特别适用于那些负载特大的web站点,这些站点通常又需要会话保持或七层处理.HAProxy运行在时下的硬件上,完全可以支持数以万计的并发连接.并且它的运行模式使得它可以很简单安全的整合进您当前的架构中, 同时可以保护你的web服务器不被暴露到网络上. HAProxy实现了一种事件驱动.单一进程

基于HAproxy的web动静分离及输出状态检测页面

一.简介 HAProxy提供高可用性.负载均衡以及基于TCP和HTTP应用的代 理,支持虚拟主机,它是免费.快速并且可靠的一种解决方案.HAProxy特别适用于那些负载特大的web站点,这些站点通常又需要会话保持或七层处理.HAProxy运行在当前的硬件上,完全可以支持数以万计的并发连接.并且它的运行模式使得它可以很简单安全的整合进您当前的架构中, 同时可以保护你的web服务器不被暴露到网络上. HAProxy实现了一种事件驱动, 单一进程模型,此模型支持非常大的并发连接数.多进程或多线程模型受

HAproxy指南之haproxy实现应用动静分离(案例篇)

实际应用环境中,往往需要根据业务请求将相关不同请求跳转到指定的后端server,比如客户静态资源请求交给静态资源server处理,php请求交给php server处理,jsp请求交给tomcat处理,即业务上的应用请求分离,而haproxy完全可以利用acl匹配规则实现这一目的 . 一. haproxy实现应用动静分离 如图所示为整体的拓扑图: 一.部署前说明: (1)系统版本: centos 6.6(64位) (2)角色及ip相关信息: 角色名称 ip信息 haproxy server et

haproxy ACL及动静分离

一.haproxy ACL说明 二.haproxy 动静分离 一.haproxy ACL说明 1.1.ACL作用 使用访问控制列表(ACL)提供了灵活的解决方案来执行内容切换,并且通常基于从请求中提取的内容,响应或任何环境状态来做出决定. 也就是,ACL能分析请求的内容,并做相应的操作 1.2.ACL语法 acl <aclname> <criterion> [flags] [operator] [<value>] <aclname>:acl 名称,自定义,建

基于HAProxy+Varnish实现动静分离、负载均衡的高可用集群

拓扑结构介绍 在实际的生产使用过程中,一个基本的能够应对日均百万PV的网络,一般会具有以下几种结构. 这其中每种结构担负了不同的角色. 代理服务器,负责进行请求调度,实现了负载均衡. KeepAlived配置代理服务器实现了高可用. 缓存服务器,实现了资源的缓存,提高了请求的命中率,加快了访问速度. 动静分离,减轻后端服务器压力,提高资源访问速度. 数据库主从复制,读写分离,降低了数据库的压力 运维监控系统,实时监控系统运行状态. 自动化运维控制系统,批量管理大量服务器. 版本控制系统,在应用的

Haproxy负载均衡/动静分离(haproxy各选项详细解释)

在前端领域做负载均衡,动静分离的程序有很多,比较常用的是nginx和Haproxy,今天就说一下 Haproxy在这两方面的表现,文章参考很多网文写成,再加上自己的实验成果,文中所有解释都经过实际环境验证. 环境介绍: Centos 6.5 Haproxy 1.7.9 前端 192.168.6.10 后端 192.168.6.20(web1)  192.168.6.21(web2) 图片服务器 192.168.6.22(img01) 1.安装Haproxy wget http://www.hap

haproxy+varnish+amp集群实现动静分离

    一.简介 Haproxy一个高性能的负载均衡服务软件,它可基于四层和七层之间进行调度,而且对各个节点具有健康状态检测的功能,当后端服务器故障时,会自动标记为不可用状态,当服务器上线时还会自动将后端主机上线.比起lvs其配置简单,且引入了frontend,backend,listen等功能,frontend可添加acl规则,可根据HTTP请求头做规则匹配,然后把请求定向到相关的backend.       二.配置相关参数详解 haproxy主要分为global.defaults.fron

HAproxy企业应用,TCP/HTTP动静分离

HAproxy企业应用,TCP/HTTP动静分离HAProxy的是一个免费的.开源的的tcp/http反向代理工具.负载均衡器,是一个企业非常快速和可靠的安全的解决方案,提供高可用性.高并发性,负载均衡和代理对TCP和基于HTTP的应用程序.它特别适用于流量非常高的网站.它已成为事实上的标准开源负载均衡器,现在随大多数主流Linux发行版一起提供,在互联网领域应用也是非常广泛,受欢迎的第三方工具. 在企业实际应用环境中,往往会根据业务请求将相关不同请求跳转到指定的后端服务器,比如客户静态资源请求

利用Haproxy对Discuz实现数据的动静分离

一,实验目的 利用Haproxy+Discuz实现数据的动静分离 二,实验模型 三,实验环境 四,实验内容 1,首先在node2,3上安装http服务,安装PHP 2,提供NFS文件共享存储 配置node2的web根目录为nfs共享目录为挂载在node3的文件根目录下. node3: mount -t nfs 172.16.18.1:/var/www/html/upload   /var/www/html/upload 3,在node2上部署Discuz论坛 将Discuz解压到站点根目录下.进