Tomcat 上的 HAProxy 返回错误 403

Tomcat 上的 HAProxy 返回错误 403

我有一台旧服务器,在端口 8080 上运行 Tomcat 服务。出于各种原因(包括保护客户端的访问),我必须在它前面设置一个 HAProxy 服务器,并使用 SSL 证书进行保护。

这是 HAProxy 相关配置:

frontend myservice
    mode    tcp
    option  tcplog
    option  logasap
    log     global
    option  tcpka
    bind    10.10.10.10:80
    bind    10.10.10.10:443 ssl crt /etc/ssl/haproxy/myservice.example.org.pem
    acl secure dst_port eq 443
    http-response add-header Strict-Transport-Security "max-age=31536000; includeSubDomains; preload;"
    http-response replace-header Set-Cookie (.*) \1;\ Secure if secure
    use_backend bck_myservice if { hdr(Host) -i myservice.example.org myservice }
    default_backend bck_deny

backend bck_myservice
    mode     tcp
    balance  leastconn
    option   prefer-last-server
    server   oldserver.example.org oldserver.example.org:8080 weight 1 check port 8080 inter 2000 rise 2 fall 5 ssl verify none

backend bck_deny
    mode http
    http-request deny

10.10.10.10 是新服务的 VIP,映射到 myservice.example.org。

访问http://oldserver.example.org:8080像往常一样工作正常。

问题: https://myservice.example.org导致错误“403 Forbidden”。访问该 URL 似乎并未到达 Tomcat 后端,因为 Tomcat 日志中没有任何痕迹。 (注意:HAProxy 配置曾经有,mode http但它导致错误“503 服务不可用”。)

答案1

事实证明,该问题是由后端禁用 SSL 证书验证的选项引起的:ssl verify none

这是更正后的工作配置:

frontend myservice
    mode    tcp
    option  tcplog
    option  logasap
    log     global
    option  tcpka
    bind    10.10.10.10:80
    bind    10.10.10.10:443 ssl crt /etc/ssl/haproxy/myservice.example.org.pem
    acl secure dst_port eq 443
    http-response add-header Strict-Transport-Security "max-age=31536000; includeSubDomains; preload;"
    http-response replace-header Set-Cookie (.*) \1;\ Secure if secure
    use_backend bck_myservice if { hdr(Host) -i myservice.example.org myservice }
    default_backend bck_deny

backend bck_myservice
    mode     tcp
    balance  leastconn
    option   prefer-last-server
    server   oldserver.example.org oldserver.example.org:8080 weight 1 check port 8080 inter 2000 rise 2 fall 5

backend bck_deny
    mode http
    http-request deny 

相关内容