Digital Ocean负载均衡器报错:普通HTTP请求发至HTTPS端口
解决Digital Ocean负载均衡器+Nginx Ingress Controller的400错误及健康检查配置问题
核心问题分析
你遇到的The plain HTTP request was sent to HTTPS port 400错误,主要源于负载均衡器的协议配置与TLS透传模式冲突,同时健康检查配置未生效可能加剧了流量转发异常:
- 当启用
do-loadbalancer-tls-passthrough: "true"时,DO LB会直接透传TCP流量到后端,但你当前设置的do-loadbalancer-protocol: "http"会让LB尝试解析HTTP请求,导致协议不匹配,触发400错误。 - 健康检查URL显示指向80端口,说明你配置的
do-loadbalancer-healthcheck-port: "3000"未生效,可能是因为Ingress Controller的Service未暴露3000端口为NodePort,或者LB配置未同步。
解决步骤
1. 修正负载均衡器协议配置
将do-loadbalancer-protocol从http改为tcp,匹配TLS透传的工作模式:
- TLS透传模式下,LB不终止TLS连接,仅转发原始TCP流量,因此需要设置协议为
tcp而非http。
2. 确保健康检查配置生效
- 检查Nginx Ingress Controller的Service资源,确认已将3000端口暴露为NodePort类型(如果健康检查端点直接在应用Pod上,需确保应用的Service也暴露了3000端口的NodePort)。
- 删除并重新创建Ingress Controller的Service,触发DO LB同步配置(部分情况下修改注解后需要手动触发同步)。
3. 验证Ingress Controller配置
- 确认Ingress资源已正确配置TLS规则,且后端服务的路由指向应用的3000端口。
- 直接测试节点的443 NodePort:
curl -v https://<节点IP>:<443对应的NodePort>,确认Ingress Controller能正常处理HTTPS请求。
调整后的注解配置示例
annotations: service.beta.kubernetes.io/do-loadbalancer-name: random service.beta.kubernetes.io/do-loadbalancer-protocol: "tcp" # 修正为tcp service.beta.kubernetes.io/do-loadbalancer-tls-passthrough: "true" service.beta.kubernetes.io/do-loadbalancer-tls-ports: "443" service.beta.kubernetes.io/do-loadbalancer-certificate-id: "masked-my-cert-id" service.beta.kubernetes.io/do-loadbalancer-disable-lets-encrypt-dns-records: "false" service.beta.kubernetes.io/do-loadbalancer-redirect-http-to-https: "true" service.beta.kubernetes.io/do-loadbalancer-healthcheck-port: "3000" service.beta.kubernetes.io/do-loadbalancer-healthcheck-protocol: "http" service.beta.kubernetes.io/do-loadbalancer-healthcheck-path: "/api/healthcheck" service.beta.kubernetes.io/do-loadbalancer-healthcheck-check-interval-seconds: "3" service.beta.kubernetes.io/do-loadbalancer-healthcheck-response-timeout-seconds: "5" service.beta.kubernetes.io/do-loadbalancer-healthcheck-unhealthy-threshold: "3" service.beta.kubernetes.io/do-loadbalancer-healthcheck-healthy-threshold: "5"
内容的提问来源于stack exchange,提问作者Tommy Leong
相关产品推荐
相关产品推荐

