2、ACL场景实践

2.4、ACL案例-基于后缀调度

根据用户请求的后缀,调度到不同的后端集群
用户通过.txt调度到172.16.1.7:80
用户通过.pdf调度到172.16.1.8:80

2.4.1、配置后端节点

#web1:.txt站点定义
cat /etc/nginx/conf.d/www.qingchen.com.conf
server {
    listen 8080;
    server_name www.qingchen.com;
    root /www
    location / {
        index index.html
    }
}
echo ".txt-->web1" > /www/web.txt

#web2:.pdf站点定义
cat /etc/nginx/conf.d/www.qingchen.com.conf
server {
    listen 80;
    server_name www.qingchen.com;
    root /www
    location / {
        index index.html
    }
}
echo ".pdf-->web2" > /www/web.pdf

2.4.2、配置Haproxy

frontend web
    bind *:80
    mode http
    
    # acl规则
    acl www_site hdr(host) -i www.qingchen.net
    
    # acl规则-请求txt --》 www   请求 pdf --blog
    acl req_txt path_end -i .txt
    acl req_pdf path_end -i .pdf
    
    # 调用
    use_backend www_cluster if www_site req_txt
    use_backend blog_cluster if  www_site req_pdf
    default_backend www_cluster

backend www_cluster
    balance roundrobin
    option httpchk HEAD / HTTP/1.1\r\nHost:\ www.qingchen.net
    server 172.16.1.7 172.16.1.7:80 check port 80 inter 3s rise 2 fall 3
    server 172.16.1.8 172.16.1.8:80 check port 80 inter 3s rise 2 fall 3

backend m_cluster
    balance roundrobin
    option httpchk HEAD / HTTP/1.1\r\nHost:\ www.qingchen.net
    server 172.16.1.7 172.16.1.7:8080 check port 8080 inter 3s rise 2 fall 3
    server 172.16.1.8 172.16.1.8:8080 check port 8080 inter 3s rise 2 fall 3

2.4.3、客户端测试

curl -HHost:www.qingchen.net http://10.0.0.5/web.pdf
curl -HHost:www.qingchen.net http://10.0.0.5/web.txt