Ssl

在同一台伺服器上執行 Hudson、Sonar 和 HA 代理

  • February 10, 2016

我在同一台伺服器上執行 Hudson、Sonar 和 HA 代理(這樣做是為了 POC,因此無法訪問多個伺服器。

我正在使用 HAProxy 為兩台伺服器啟用 SSL。

我可以使用來自主機的以下 URL 127.0.0.1:9000/sonar 和 127.0.0.1:8088/hudson 在本地訪問這些伺服器中的每一個

但是當我嘗試使用 https:/52.XXX/sonar 或 https:/52.XXX/hudson 遠端訪問伺服器時,我得到了

No data received
ERR_EMPTY_RESPONSE

如果我將 a 添加default_backend sonar到 HAProxy 配置中,我可以執行聲納但不能執行 hudson,反之亦然。

我的 HAProxy 配置是這樣的

global
   log 127.0.0.1 local2
   tune.ssl.default-dh-param 2048

defaults
   mode tcp
   # Set timeouts to your needs
   timeout client  1h
   timeout connect 1h
   timeout server  1h
   option http-server-close

frontend http
   mode http
   bind *:80
   compression algo gzip
   redirect scheme https if !{ ssl_fc }

frontend https
   mode tcp
   bind *:443 ssl crt /etc/haproxy/buildserver.pem
   compression algo gzip

   use_backend sonar if { path_beg /sonar }
   use_backend hudson if { path_beg /hudson }

backend sonar
   server srv_sonar localhost:9000

backend hudson
   server srv_hudson localhost:8088

任何有關讓聲納/哈德遜執行的幫助將不勝感激。

編輯有效的最終配置文件

global
   log 127.0.0.1 local2
   tune.ssl.default-dh-param 2048

defaults
   mode http
   # Set timeouts to your needs
   timeout client  1h
   timeout connect 1h
   timeout server  1h
   option http-server-close

frontend http
   bind *:80
   compression algo gzip
   redirect scheme https if !{ ssl_fc }

frontend https
   bind *:443 ssl crt /etc/haproxy/buildserver.pem
   compression algo gzip

   use_backend sonar if { path_beg /sonar }
   use_backend hudson if { path_beg /hudson }

backend sonar
   server srv_sonar localhost:9000

backend hudson
   server srv_hudson localhost:8088

您的配置已設置為mode tcp用於該frontend https塊。

將其更改為mode http,您應該沒問題。

原因是 HAProxy 沒有解碼您的 HTTP 請求,而只是查看第 4 層資訊(源和目標 IP 和埠)。

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