使用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即可。