12

我们有 1 个负载均衡器,后面有 3 个成员:

主平衡器:www.website.com 成员:web1.website.com、web2.website.com 和 web3.website.com

目前我们在负载均衡器上使用 nginx,但我们想用 HAProxy 替换它。

Nginx 将没有 www (domain.com) 的域重写为 www.domain.com ,使用以下行:

server {
    server_name domain.com;
    listen 1.2.3.4:80;

    rewrite ^(.*) http://www.domain.com$1 permanent;
}

如何使用 HAproxy 进行管理?

我的 haproxy 配置:

frontend http 1.2.3.4:80

    default_backend www_cluster
    acl is_www hdr_end(host) -i www.domain.com
    use_backend www_cluster if is_www


backend www_cluster

    balance roundrobin
    cookie SERVERID insert nocache indirect

    option httpchk HEAD / HTTP/1.0
    option httpclose
    option forwardfor

    server web1 1.2.3.5:82 cookie WEB1 check
    server web2 1.2.3.6:82 cookie WEB2 check
    server web3 1.2.3.7:82 cookie WEB3 check

蒂亚!

4

2 回答 2

25

修改frontend块:

frontend http 1.2.3.4:80
    default_backend www_cluster
    redirect prefix http://www.mydomain.com code 301 if { hdr(host) -i domain.com }

资源:

  1. Haproxy 将 www 重定向到非 www
  2. HAProxy 1.4 手册
  3. 个人经验
于 2013-11-07T02:37:42.297 回答
5

HAProxy 配置手册直接回答了这个问题:

Example:

Append 'www.' prefix in front of all hosts not having it

http-request redirect code 301 location      \
  http://www.%[hdr(host)]%[capture.req.uri]  \
  unless { hdr_beg(host) -i www }

它在redirect条目下:

于 2016-06-17T09:03:01.963 回答