使用haproxy的ACL实现基于文件后缀名的动静分离

一、环境准备

二、实现proxy

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

#创建子配置
[root@localhost ~]# mkdir /etc/haproxy/conf.d
#修改service文件
[root@localhost ~]# vim /lib/systemd/system/haproxy.service
[Unit]
Description=HAProxy Load Balancer
After=network-online.target
Wants=network-online.target

[Service]
Environment="CONFIG=/etc/haproxy/haproxy.cfg" "PIDFILE=/run/haproxy.pid"
EnvironmentFile=/etc/sysconfig/haproxy
ExecStartPre=/usr/sbin/haproxy -f $CONFIG  -f /etc/haproxy/conf.d/-c -q $OPTIONS    ##修改此项
ExecStart=/usr/sbin/haproxy -Ws -f $CONFIG -f /etc/haproxy/conf.d/ -p $PIDFILE $OPTIONS   ##修改此项
ExecReload=/usr/sbin/haproxy -f $CONFIG -c -q $OPTIONS
ExecReload=/bin/kill -USR2 $MAINPID
SuccessExitStatus=143
KillMode=mixed
Type=notify

[Install]
WantedBy=multi-user.target

[root@localhost ~]# cat /etc/haproxy/conf.d/test.cfg
frontend magedu_http_port
    bind 10.0.0.8:80
    mode http
    acl     acl_html    path_end -i .html
    acl     acl_php     path_end -i .php

    use_backend     html_hosts  if  acl_html
    use_backend     php_hosts   if  acl_php

backend html_hosts
    mode http
    server web1 10.0.0.7:80 check inter 2000 fall 3 rise 5
backend php_hosts
    mode http
    server web2 10.0.0.17:80 check inter 2000 fall 3 rise 5

#启动haproxy服务
[root@localhost ~]# systemctl daemon-reload
[root@localhost ~]# systemctl start haproxy

三、配置后端服务器

[root@html] # yum -y install httpd
[root@html] # echo "http://10.0.0.7/index.html" >  /var/www/html/index.html
[root@html] # systemctl start httpd

[root@php]# yum -y install httpd
[root@php]# cat /var/www/html/test.php
<?php
echo "<h1>http://10.0.0.17/test.php</h1>\n";
?>
[root@html] # systemctl start httpd

四、访问测试

[root@client]# curl http://10.0.0.8/index.html
http://10.0.0.7/index.html
[root@client]# curl http://10.0.0.8/test.php
<?php
echo "<h1>http://10.0.0.17/test.php</h1>\n";
?>

由此,展示了html和php两种资源类型的动静分离。更多类型的资源,只需完善acl即可。

posted @ 2022-01-24 22:29  火火7412  阅读(39)  评论(0编辑  收藏  举报