redirecionar url reescrito usando haproxy

6

Usando o haproxy versão 1.4.24 no Ubuntu 14.04

Eu gostaria de usar o haproxy para reescrever e redirecionar URLs que não são mais válidos para o novo equivalente. Eu já estou usando haproxy como proxy reverso e balanceador de carga. Eu tenho a reescrita funcionando corretamente, mas quando tento redirecionar eu acabo sem redirecionamento ou em um loop de redirecionamento. Eu li em alguns lugares que uma técnica para isso é reescrever e redirecionar o URL usando o prefixo no frontend, mas não estou tendo sorte. Qualquer ajuda seria apreciada. Obrigado.

global
    log 127.0.0.1 local0
    log 127.0.0.1 local1 notice
    maxconn 4096
    user haproxy
    group haproxy
    spread-checks 0

defaults
    log global
    mode http
    option httplog
    option dontlognull
    retries 3
    timeout queue 20000
    timeout client 50000
    timeout connect 5000
    timeout server 50000

frontend haproxy-0-80
    bind 0.0.0.0:80
    default_backend haproxy_service
    acl old_url path_beg -i /post
    # The below doesn't appear to have any effect
    reqrep ^([^\ :]*)\ /post/\d+/(.+)/?     \ /
    redirect prefix http://10.0.3.10 code 301 if old_url

backend haproxy_service
    balance leastconn
    cookie SRVNAME insert
    # The below properly handles the rewrite
    reqrep ^([^\ :]*)\ /post/\d+/(.+)/?     \ /
    server ghost-0-2368 10.0.3.220:2368 maxconn 100 cookie S0 check
    
por hatch 13.12.2014 / 23:55

1 resposta

8

Parece que eu estava muito perto de uma configuração de trabalho.

Alterar a linha de redirecionamento para ler redirect prefix / code 301 if old_url fez com que funcionasse conforme o esperado.

Eu escrevi uma postagem no blog que descreve o problema com um pouco mais de detalhes: link

    
por 15.12.2014 / 06:30