HAProxy 作为 Docker 容器不作为反向代理路由

HAProxy 作为 Docker 容器不作为反向代理路由

此 HAProxy 配置应提供以下功能:

  • Google 主页询问时http://localhost:9000/google/
  • 维基百科主页在请求任何其他内容时http://localhost:9000

我不确定 HAProxy 的配置文件出了什么问题。我尝试让 HAProxy 记录所有内容stdout(检查下面的配置详细信息),但当访问由 提供的任何内容时,localhost:9000我看不到日志行(docker logs -f ...),而且:我总是返回503 Service Unavailable

问题可能出在docker本身,但我找不到排除故障/调试此设置的方法。

  • 为什么反向代理规则不起作用?我既看不到 www.google.com,也看不到 www.wikipedia.org?如何解决这个问题?
  • 为什么 HAProxy 没有记录任何内容stdout如何解决这个问题?

HAProxy 配置文件:

global
    log 127.0.0.1 local0 debug

defaults
    log     global
    mode    http

    timeout connect 3000
    timeout client  3000
    timeout server  3000

frontend reverse_proxy_routing_thing
    bind *:9000
    option tcplog

    acl path_google  path_beg /google/
    use_backend backend_google if path_google

    default_backend default_backend_wikipedia

backend default_backend_wikipedia
    server my_default_backend_wikipedia www.wikipedia.org

backend backend_google
    server my_backend_google www.google.com

docker 文件名为Dockerfile.reverse-proxy

FROM haproxy:1.8.14-alpine

COPY haproxy.cfg /usr/local/etc/haproxy/haproxy.cfg
  • 我像这样构建docker镜像:docker build -t rev-proxy-test-i -f Dockerfile.reverse-proxy .
  • 我像这样运行 docker 容器(参见端口映射):docker run -d --name rev-proxy-test-c -p 9000:9000 rev-proxy-test-i

相关内容