docker - HaProxy 转发代理在 HTTP 上工作,但在 HTTPS 上给出 503
问题描述
我希望以下配置能够接收 HTTPS 请求,执行 SSL 卸载并将 HTTP 请求发送到我的后端,但是使用 HTTPS 我得到“503 服务不可用”。
- 所有 ACL 在 HTTP 上都能正常工作,并且统计信息页面将它们显示为在线
- 统计页面在 HTTPS 上正常工作
- 这些都在 docker compose 文件中,docker 正在正确地对内部 IP 进行名称解析
也许我错过了一些明显的东西?尝试这个很新,所以任何帮助表示赞赏。
global
tune.ssl.default-dh-param 2048
defaults
mode http
timeout connect 5000ms
timeout client 50000ms
timeout server 50000ms
backend certbot
option httpchk GET /
default-server init-addr libc,none
server certbot_server certbot check port 80
backend client
option httpchk HEAD /
server client_server client check port 80
backend api
option httpchk OPTIONS /api/healthcheck
server api_server api check port 80
frontend app
bind *:80
bind *:443 ssl crt /certs/productpedia.co.uk.pem
use_backend certbot if { path_beg -i /.well-known/acme-challenge/ }
use_backend api if { path_beg /api }
default_backend client
stats enable
stats uri /stats
stats refresh 10s
stats admin if LOCALHOST
编辑:
附加了 503 请求的wireshark 跟踪,看起来服务器正在重置连接,但不确定我可以从这里去哪里,或者是什么原因造成的?
解决方案
经过一整天的调试,看起来简单地指定端口 80 就可以了,虽然我希望默认端口是 80,也许它通过默认端口 443?在此更改后检查后,我也可以摆脱端口 80,这是最初的触发提示,表明那里可能有问题。
backend certbot
option httpchk GET /
default-server init-addr libc,none
server certbot_server certbot:80 check
backend client
option httpchk HEAD /
server client_server client:80 check
backend api
option httpchk OPTIONS /api/healthcheck
server api_server api:80 check
推荐阅读
- jquery - 当授权标志为否时,使指定单元格在 Ken do Grid 中只读
- reactjs - 从两个不同的静态构建目录提供 React 构建文件
- asp.net-web-api - 使用 Asp.net Web Api 和 Angular 8 下载文件
- android-fragments - 从 Kotlin 片段中的 Activity 获取上下文
- javascript - 未捕获(承诺中)类型错误:无法读取未定义的属性“0”。从 csv 文件中提取以填充数组
- wpf - 有没有办法在除调试之外的配置中使用 XAML 的热重载功能?
- javascript - 是否可以将多个功能传递给导航项?
- r - 如何将此 for 循环转换为应用函数?
- php - 获取每个 ID 的最后一条记录
- ember.js - geolib 的导入在 Ember-cli 中不起作用