动静代理linux,HAproxy配置详解以及动静分离的实现

一、前面已经介绍过关于haproxy的工作特性了,本文主要介绍下haproxy如何来实现web应用的动静分离的,主要思路就是通过frontend段中定义acl访问控制,把符合静态内容的请求归类到一个acl,符合动态的请求归类到另外一个acl,backend段中定义接收请求的静态内容和动态内容的服务器,然后通过use_backend调用定义的acl即可。

二、实验环境:

192.168.30.116 OS:CentOS6.4 x86_64  haproxy.luojianlong.com

192.168.30.117 OS:Centos6.4 x86_64  static.luojianlong.com

192.168.30.119 OS:Centos6.4 x86_64  dynamic.luojianlong.com

haproxy version:haproxy-1.4.24

拓扑图如下:

d957968e135d584a78b3e4235c9e9130.png

在haproxy server上安装haproxy,这里使用yum安装

[root@haproxy ~]# yum -y install haproxy

在static server,dynamic上安装httpd和php

[root@static ~]# yum -y install httpd

[root@dynamic ~]# yum -y install httpd php

分别启动static,dynamic的httpd,测试本地访问是否正常

[root@static ~]# service httpd start

[root@static ~]# ss -naptl | grep :80

LISTEN    0      128                      :::80                      :::*      users:(("httpd",24245,5),("httpd",24247,5),("httpd",24248,5),("httpd",24249,5),("httpd",24250,5),("httpd",24251,5),("httpd",24252,5),("httpd",24253,5),("httpd",24254,5))

[root@static ~]# echo "static.luojianlong.com" >> /var/www/html/index.html

[root@static ~]# curl 192.168.30.117

static.luojianlong.com

[root@dynamic ~]# service httpd start

[root@dynamic ~]# ss -anplt | grep :80

LISTEN    0      128                      :::80                      :::*      users:(("httpd",13702,5),("httpd",13704,5),("httpd",13705,5),("httpd",13706,5),("httpd",13707,5),("httpd",13708,5),("httpd",13709,5),("httpd",13710,5),("httpd",13711,5))

[root@dynamic ~]# vi /var/www/html/index.php

echo "dynamic.luojianlong.com"

?>

[root@dynamic ~]# curl -I http://192.168.30.119/index.php

HTTP/1.1 200 OK

Date: Thu, 03 Apr 2014 05:39:23 GMT

Server: Apache/2.2.15 (CentOS)

X-Powered-By: PHP/5.3.3

Connection: close

Content-Type: text/html; charset=UTF-8

访问都正常

下面开始配置haproxy

[root@haproxy ~]# cp /etc/haproxy/haproxy.cfg /etc/haproxy/haproxy.cfg.bak

[root@haproxy ~]# vi /etc/haproxy/haproxy.cfg

global

log        127.0.0.1 local2

chroot      /var/lib/haproxy

pidfile    /var/run/haproxy.pid

maxconn    4000

user        haproxy

group      haproxy

daemon

stats socket /var/lib/haproxy/stats

defaults

mode                    http

log                    global

option                  httplog

option                  dontlognull

option http-server-close

option forwardfor      except 127.0.0.0/8

option                  redispatch

retries                3

timeout http-request    10s

timeout queue          1m

timeout connect        10s

timeout client          1m

timeout server          1m

timeout http-keep-alive 10s

timeout check          10s

maxconn                3000

listen stats

mode http

bind 0.0.0.0:1080

stats enable

stats hide-version

stats uri    /haproxyadmin?stats

stats realm  Haproxy\ Statistics

stats auth    admin:admin

stats admin if TRUE

frontend http-in

bind *:80

mode http

log global

option httpclose

option logasap

option dontlognull

capture request  header Host len 20

capture request  header Referer len 60

acl url_static      path_beg      -i /static /images /javascript /stylesheets

acl url_static      path_end      -i .html .jpg .jpeg .gif .png .css .js

acl url_dynamic      path_end      -i .php .jsp

use_backend static_servers          if url_static

use_backend dynamic_servers        if url_dynamic

backend static_servers

balance roundrobin

server imgsrv1 192.168.30.117:80 check maxconn 6000

#  server imgsrv2 192.168.30.118:80 check maxconn 6000

backend dynamic_servers

balance source

server websrv1 192.168.30.119:80 check maxconn 1000

#  server websrv2 192.168.30.120:80 check maxconn 1000

stats enable:启用基于程序编译时默认设置的统计报告,不能用于“frontend”区段;

stats hide-version:启用统计报告并隐藏HAProxy版本报告,不能用于“frontend”区段。默认情况下,统计页面会显示一些有用信息,包括HAProxy的版本号,然而,向所有人公开HAProxy的精确版本号是非常有风险的,因为它能帮助恶意用户快速定位版本的缺陷和漏洞;

stats realm:启用统计报告并高精认证领域,不能用于“frontend”区段。haproxy在读取realm时会将其视作一个单词,因此,中间的任何空白字符都必须使用反斜线进行转义。此参数仅在与“stats auth”配置使用时有意义;

stats scope:启用统计报告并限定报告的区段,不能用于“frontend”区段。当指定此语句时,统计报告将仅显示其列举出区段的报告信息,所有其它区段的信息将被隐藏。如果需要显示多个区段的统计报告,此语句可以定义多次。需要注意的是,区段名称检测仅仅是以字符串比较的方式进行,它不会真检测指定的区段是否真正存在;

stats auth:启用带认证的统计报告功能并授权一个用户帐号,其不能用于“frontend”区段;

stats admin:在指定的条件满足时启用统计报告页面的管理级别功能,它允许通过web接口启用或禁用服务器,不过,基于安全的角度考虑,统计报告页面应该尽可能为只读的。此外,如果启用了HAProxy的多进程模式,启用此管理级别将有可能导致异常行为;

option http-server-close:允许服务器端关闭连接;

option dontlognull:访问内容为空的不记录日志;

option redispatch:在session失败后,是否允许重新分配;

retries:用于haproxy到后端server连接失败时重试次数;

option httplog:启用记录HTTP请求、会话状态和计时器的功能;

option forwardfor:允许在发往服务器的请求首部中插入“X-Forwarded-For”首部;

HAproxy 的详细介绍:请点这里

HAproxy 的下载地址:请点这里

推荐阅读:

0b1331709591d260c1c78e86d0c51c18.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值