Haproxy

如果後端關閉,haproxy https 重定向循環

  • February 12, 2018

此 haproxy 配置終止 2 個站點(foo 和 bar)的 ssl,並將兩個站點負載平衡到它們自己的後端集群。它還將http請求重定向到https。

這很好用。僅當後端關閉時,它才會進入兩個站點的重定向循環。例如:https://foo.example.com -> https://foo.example.com

如果我刪除重定向。它通過 http 和 https 為站點提供服務,當後端關閉時,它會按照我的預期提供 503 頁面。

我想將http重定向到https。那麼,為什麼會有重定向循環呢?

global
   log 127.0.0.1   local0 debug
   maxconn 1024
   chroot /var/haproxy
   uid 604
   gid 604
   daemon
   pidfile /var/run/haproxy.pid

defaults
   log     global
   mode    http
   option  httplog
   option  dontlognull
   option  http-server-close
   option  redispatch
   retries 3
   maxconn 2000
   errorfile 503 /etc/haproxy/503.http

frontend http
   bind *:80
   redirect scheme https code 301 if !{ ssl_fc }

frontend https
   bind *:443 ssl crt /etc/ssl/example.com.pem

   option forwardfor
   reqadd X-Forwarded-Proto:\ https
   http-response set-header Strict-Transport-Security "max-age=31536000;"

   acl project_foo hdr(host) -i foo.example.com
   acl project_bar hdr(host) -i bar.example.com

   use_backend cluster_foo if project_foo
   use_backend cluster_bar if project_bar

backend cluster_foo
   server foo-1 foo-1.example.com:80 check

backend cluster_bar
   server bar-1 bar-1.example.com:80 check

測試時,haproxy 和 nginx 在同一台伺服器上。foo-1.example.com 在專用 IP 上偵聽埠 80,但 haproxy 在 *:80 上偵聽

讓 haproxy 在專用 IP 上偵聽修復了此問題。所以,上面的配置就好了。我花時間重新測試所有內容,因為我確實簡化了配置以進行合理的可重複設置

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