Redirecionamento de haproxy ssl

1

Não tenho certeza se entendi como o haproxy funciona exatamente. Eu tenho sistema que é composto de poucos servidores com comunicação baseada em http. Eu quero usar haproxy como balanceador de carga e algo como servidor https ao mesmo tempo. Deve funcionar a seguir: user write address e haproxy decide - se for http então ele redireciona para https, se ele https ele conecta com o sistema via http. Quero dizer que apenas cliente com haproxy deve ter conexão https, mas haproxy com sistema deve ter http. Aqui está a imagem com a arquitetura descrita:

Eu escrevi o arquivo de configuração do haproxy e somente o que recebo está redirecionando de http para https e mostrando o primeiro site - o resto está morto, porque todas as comunicações se parecem com:

client --(https)--> haproxy --(https)-->system

em vez de

client --(https)--> haproxy --(http)-->system

É possível criá-lo com haproxy?

Abaixo está o meu arquivo de configuração haproxy:

global
    pidfile /var/run/haproxy.pid
    log 127.0.0.1 local2 debug
    maxconn 2048
    tune.ssl.default-dh-param 2048
    ca-base /etc/ssl/certs
    crt-base /etc/ssl/private

defaults
    mode        http
    option forwardfor
    option http-server-close
    log global
    option      httplog
    option dontlognull
    option forwardfor
    option http-server-close
    option redispatch
    option tcp-smart-accept 
    option tcp-smart-connect
    timeout http-request 10s
    timeout queue 1m
    timeout connect 5s
    timeout client 2m
    timeout server 2m
    timeout http-keep-alive 10s
    timeout check 5s
    retries 3
    compression algo gzip
    compression type text/html text/html;charset=utf-8 text/plain text/css text/javascript application/x-javascript application/javascript application/ecmascript application/rss+xml application/atomsvc+xml application/atom+xml application/atom+xml;type=entry application/atom+xml;type=feed application/cmisquery+xml application/cmisallowableactions+xml application/cmisatom+xml application/cmistree+xml application/cmisacl+xml application/msword application/vnd.ms-excel application/vnd.ms-powerpoint

frontend https-in
    bind *:80
    redirect scheme https if !{ ssl_fc }
    bind *:443 ssl crt /etc/ssl/private/cert.pem
    capture request header X-Forwarded-For len 64
    capture request header User-agent len 256
    capture request header Cookie len 64
    capture request header Accept-Language len 64
    rspadd Strict-Transport-Security:\ max-age=15768000
    option contstats
    default_backend share-https

backend share-https
    option httpchk GET /share
    balance roundrobin
    cookie JSESSIONID prefix
    server main srv1:9080 cookie main check inter 5000 weight 4
    server secondary srv2:9080 cookie secondary check inter 5000 weight 1
    
por Eleid 06.10.2015 / 18:09

1 resposta

0

O problema foi porque o Sistema que descrevi era Alfresco - o aplicativo chamado "share" tem a CSRFPolicy que bloqueou o https. De acordo com este :

  1. Copie a configuração padrão "CSRFPolicy" de:

TOMCAT_HOME/webapps/share/WEB-INF/classes/alfresco/share-security-config.xml

para:

TOMCAT_HOME/shared/classes/alfresco/web-extension/share-config-custom.xml

  1. Adicione o atributo replace="true":

<config evaluator="string-compare" condition="CSRFPolicy" replace="true">

  1. Atualize as propriedades referer e origem com o FQDN (https) do Apache VirtualHost

<referer>https://HAProxyAddress/.*</referer> <origin>https://HAProxyAddress</origin>

E isso é tudo. Isso funciona para mim.

    
por 08.10.2015 / 07:50