请求未到达 HAproxy 上的 80 端口

请求未到达 HAproxy 上的 80 端口

我正在配置 HAProxy 以将 http 重定向到 https,但似乎不起作用。我使用的配置是:

/etc/hosts内容

127.0.0.1 example.com

Haproxy 配置

frontend http
  mode http
  bind :80
  bind :443 ssl crt /etc/ssl/
  redirect scheme https if !{ ssl_fc }

  default_backend my_backend

使用 curl 测试时出现此错误

$ curl https://example.com < this works 
$ curl http://example.com 
> curl: (7) Failed to connect to 2400:cb00:2048:1::681c:a20: No route to host

但是命令lsof有输出

$ sudo lsof -i :80 | grep LISTEN
haproxy   7290 root    4u  IPv4 0x9485b36892b5495d      0t0  TCP *:http (LISTEN)

我不知道这种情况出了什么问题。这是我第一次在 Haproxy 上配置 SSL。

答案1

我在 HAProxy 中有一个非常相似的设置,可以正常工作。我只发现您的配置和我的配置之间有两个不同之处。

  1. /etc/hosts我必须而example.com不是。0.0.0.0127.0.0.1
  2. 在我的前端,两个条目在冒号前都bind包含一个通配符 ( )。例如:*

    bind *:80
    bind *:443 ssl crt /etc/ssl/ssl.pem
    

    2a. 我实际上在我的配置中使用了一个 pem 文件(如上所述),但看到curl https://example.com它有效,所以这不太可能是问题所在。

我还建议查看输出netstat -tulpn | grep haproxy以了解 HAProxy 绑定位置的更多详细信息。

希望有所帮助。

相关内容