HaProxy 正向代理在 HTTP 上工作,但在 HTTPS 上提供 503
HaProxy forward proxy works on HTTP but gives 503 on HTTPS
我希望以下配置能够接收 HTTPS 请求,执行 SSL 卸载并将 HTTP 请求发送到我的后端,但是使用 HTTPS 我得到“503 服务不可用”。
- 所有 ACL 在 HTTP 上都能正常工作,统计页面显示它们在线
- 统计页面在 HTTPS 上正常工作
- 这些都在一个 docker 组合文件中,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
我希望以下配置能够接收 HTTPS 请求,执行 SSL 卸载并将 HTTP 请求发送到我的后端,但是使用 HTTPS 我得到“503 服务不可用”。
- 所有 ACL 在 HTTP 上都能正常工作,统计页面显示它们在线
- 统计页面在 HTTPS 上正常工作
- 这些都在一个 docker 组合文件中,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