在同一台服务器上运行 Hudson、Sonar 和 HA Proxy

在同一台服务器上运行 Hudson、Sonar 和 HA Proxy

我在同一台服务器上运行 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 tcpfrontend https

将其改为mode http,你就没问题了。

原因是 HAProxy 不会解码您的 HTTP 请求,而只是查看第 4 层信息(源和目标 IP 和端口)。

相关内容