我正在配置 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 中有一个非常相似的设置,可以正常工作。我只发现您的配置和我的配置之间有两个不同之处。
- 在
/etc/hosts
我必须而example.com
不是。0.0.0.0
127.0.0.1
在我的前端,两个条目在冒号前都
bind
包含一个通配符 ( )。例如:*
bind *:80 bind *:443 ssl crt /etc/ssl/ssl.pem
2a. 我实际上在我的配置中使用了一个 pem 文件(如上所述),但看到
curl https://example.com
它有效,所以这不太可能是问题所在。
我还建议查看输出netstat -tulpn | grep haproxy
以了解 HAProxy 绑定位置的更多详细信息。
希望有所帮助。