Ssl

Haproxy ssl 重定向

  • October 8, 2015

我不確定我是否了解 haproxy 如何準確工作。我有一個系統,它由幾個基於 http 通信的伺服器組成。我想同時使用 haproxy 作為負載均衡器和 https 伺服器之類的東西。它應該按照以下方式工作:使用者寫入地址和 haproxy 決定 - 如果是 http,則將其重定向到 https,如果是 https,則通過 http 與系統連接。我的意思是只有帶有 haproxy 的客戶端應該有 https 連接,但帶有系統的 haproxy 應該有 http。這是描述架構的圖像:

在此處輸入圖像描述

我寫了 haproxy 配置文件,只有我得到的是從 http 重定向到 https 並顯示第一個站點 - 休息已經死了,因為所有通信看起來像:

客戶端 –(https)–> haproxy –(https)–> 系統

代替

客戶端 –(https)–> haproxy –(http)–> 系統

是否可以使用 haproxy 創建它?

下面是我的 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

問題是因為我描述的系統是 Alfresco - 名為“share”的應用程序具有阻止 https 的 CSRFPolicy。根據這個解決方案

  1. 從以下位置複製“CSRFPolicy”預設配置:

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

到:

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

  1. 添加屬性 replace=“true”:

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

  1. 使用 Apache VirtualHost 的 FQDN (https)更新屬性refererorigin

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

就這樣。這個對我有用。

引用自:https://serverfault.com/questions/727111