我在同一台服务器上运行 Hudson、Sonar 和 HA Proxy(这样做是为了 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
如果我default_backend sonar
向 HAProxy 配置中添加一个,我可以运行 sonar 但不能运行 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
如能得到有关使 sonar/hudson 运行的任何帮助,我们将不胜感激。
编辑最终有效的配置文件
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
答案1
您的配置已设置为用于mode tcp
块frontend https
。
将其改为mode http
,你就没问题了。
原因是 HAProxy 不会解码您的 HTTP 请求,而只是查看第 4 层信息(源和目标 IP 和端口)。