Solução do servidor, encaminhando o tráfego HTTP

1

Estou procurando uma solução para redirecionar solicitações HTTP GET / POST em um servidor.

A parte fácil seria a conversão de porta e o redirecionamento de nome de host (redirecionamento HTTP 3xx): Quando meu servidor em um DMZ recebe tráfego na porta 7070 ( link ), ele redireciona o tráfego para um servidor da Web público ( link na porta padrão 80)

Mas também é necessário modificar os cabeçalhos de solicitação rápida:

  • / clu-prod deve ser removido do URI
  • O host: mydmz.server.com deve ser substituído por Host: liveupdate.symantecliveupdate.com

Qual ferramenta, soluções eu poderia usar em um servidor para escutar na porta 7070 e fazer o seguinte? Um balanceador de carga, um proxy HTTP?

    
por Florian Bidabe 22.08.2016 / 00:27

1 resposta

2

Acho que você pode conseguir isso com o HAProxy.

  • Defina para ouvir a porta 7070 / tcp no modo httpd.
  • modifique o cabeçalho do host com haproxy replace-value. No seu caso, poderia ser assim:

    http-request replace-value Host mydmz.server.com:(.*) liveupdate.symantecliveupdate.com:
    
  • tira o URI com reescrita de url haproxy. No seu caso, isso poderia ser algo como:

    reqrep ^([^\ ]*\ /)clu-prod[/]?(.*)     
    

Com essas configurações, sua configuração HAProxy poderia ser algo como isto (isso é modificado rapidamente a partir da configuração padrão do HAProxy no CentOS 7, isso é não testado completamente):

    global
   log         127.0.0.1 local2
    chroot      /var/lib/haproxy
    pidfile     /var/run/haproxy.pid
    maxconn     4000
    user        haproxy
    group       haproxy
    daemon
    stats socket /var/lib/haproxy/stats

defaults
    mode                    http
    log                     global
    option                  httplog
    option                  dontlognull
    option http-server-close
    option forwardfor       except 127.0.0.0/8
    option                  redispatch
    retries                 3
    timeout http-request    10s
    timeout queue           1m
    timeout connect         10s
    timeout client          1m
    timeout server          1m
    timeout http-keep-alive 10s
    timeout check           10s
    maxconn                 3000

frontend  main *:7070
    default_backend             app

backend app
    http-request replace-value Host mydmz.server.com:(.*) liveupdate.symantecliveupdate.com:
    reqrep ^(.*)/clu-prod(.*) /
    balance     roundrobin
    server  app1 liveupdate.symantecliveupdate.com:80 check

Outra opção que você talvez possa usar é o link do proxy do squid     

por 23.08.2016 / 15:02