2013-10-03 3 views
7

Abbiamo 1 loadbalancer con 3 membri dietro di essa:Come riscrivere domain.com a www.domain.com con HAProxy?

bilanciatore principale: www.website.com membri: web1.website.com, web2.website.com e web3.website.com

Attualmente siamo stiamo usando nginx sul loadbalancer, ma vogliamo sostituirlo con HAProxy.

Nginx riscrive il dominio senza www (domain.com) per www.domain.com con la seguente riga:

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

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

Come gestire questo con HAproxy?

mio config 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 

TIA!

risposta

17

rivedere la frontend blocco:

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 } 

Fonte:

  1. Haproxy redirect www to non-www
  2. HAProxy 1.4 Manual
  3. L'esperienza personale
+0

Come nascondo 'indice. php' da url o n haproxy – Nullpointer

1

La configurazione HAProxy risposte manuale Questo direttamente:

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 } 

E 'sotto la voce redirect:

+0

Questo reindirizzerà 'blog.example.com' a' www.blog.example.com'. Qualcuno sa come evitare questo? – srigi

+0

Immagino che tu possa usare 'unless {hdr_beg (host) -i www} O a meno che {hdr_beg (host) -i blog}' –