haproxy - Solicite a rota e mantenha o mesmo URL base

1

Sou novo no haproxy e estou lutando um pouco tentando configurá-lo.

O que eu quero:

  1. Digite no navegador: proxy.company.com/Test/App
  2. Faça o haproxy equilibrar a solicitação entre webapp01.company.com/Test/App e webapp02.company.com/Test/App
  3. Mantenha o URL base proxy.company.com/Test/App

O que eu tenho até agora: Eu tenho dois sites de configuração:

  1. webapp01.company.com/Test/App
  2. webapp02.company.com/Test/App

Ambos funcionam e quando eu navego para cada um individualmente recebo uma tela com o nome do servidor que atendeu a solicitação (WebApp01 ou WebApp02).

No entanto, quando vou para proxy.company.com/Test/App, recebo um erro 404. Espero que a solicitação seja roteada para webapp01 ou webapp02 e espero ver o nome do servidor que atende à solicitação.

Aqui está minha configuração atual:

global
        log /dev/log    local0
        log /dev/log    local1 notice
        chroot /var/lib/haproxy
        user haproxy
        group haproxy
        daemon

defaults
        log     global
        mode    http
        option  httplog
        option  dontlognull
        contimeout 5000
        clitimeout 50000
        srvtimeout 50000
        errorfile 400 /etc/haproxy/errors/400.http
        errorfile 403 /etc/haproxy/errors/403.http
        errorfile 408 /etc/haproxy/errors/408.http
        errorfile 500 /etc/haproxy/errors/500.http
        errorfile 502 /etc/haproxy/errors/502.http
        errorfile 503 /etc/haproxy/errors/503.http
        errorfile 504 /etc/haproxy/errors/504.http

frontend proxy.company.com
   bind :80
acl test_app path_end -i /Test/App

use_backend srvs_test    if test_app

backend srvs_test
   balance roundrobin
   server webapp01 webapp01.company.com:80 check
   server webapp02 webapp02.company.com:80 check

Se eu alterar a configuração de back-end para isso:

backend srvs_test
   balance roundrobin
   redirect location http://webapp01.company.com/Test/App

Funciona, no entanto, se eu digitar proxy.company.com/Test/App, sou redirecionado para webapp01.company.com/Test/App. O URL base foi alterado e quero que ele permaneça proxy.company.com/Test/App

É possível? Como eu mudo a configuração para permitir o que eu quero?

    
por ornstai 25.02.2016 / 17:33

1 resposta

1

Um proxy reverso irá, por padrão, reescrever o cabeçalho do Local para que não haja necessidade de fazer isso.

Use path_beg em vez de path_end .

Eu acho que sua configuração é mínima. O que acontece quando você atinge proxy.company.com ? Está faltando um default_backend .

Além disso, a ideia do proxy é que você não precisa expor o webapp01 e o 02 ao mundo. Não há necessidade de fornecer IPs externos, como mostra o exemplo com essas entradas de DNS. Basta usar os internos que podem ser acessados pelo seu proxy.

Tente algo como:

frontend proxy.company.com *:80
  acl test_app path_beg -i /Test/App
  use_backend srvs_test if test_app
  default_backend default

backend srvs_test
   balance roundrobin
   server webapp01 webapp01.company.com:80 check
   server webapp02 webapp02.company.com:80 check

backend default
   server localhost:80 check
    
por 25.02.2016 / 20:42