在pfSense中结合ACME与HAProxy实现HTTP转HTTPS重定向并兼容ACME独立HTTP服务器挑战的方案咨询
我目前在pfSense上搭配ACME和HAProxy插件使用,用来管理证书自动续期,同时用HAProxy做带负载均衡能力的反向代理。
在ACME模块里,我配置了需要验证的域名,设置的是独立HTTP服务器模式——证书续期时,会启动一个监听80端口的独立HTTP服务,Let's Encrypt通过访问.well-known/acme-challenge/路径下的文件完成验证。
现在我想在HAProxy的前端实现所有HTTP流量转HTTPS的重定向,于是在HAProxy里新建了一个监听WAN口80端口的前端,设置了ACL规则:如果请求路径不是以/.well-known/acme-challenge/开头,就重定向到HTTPS版本的URL。
这个ACL规则本身是生效的,但问题来了:当请求路径属于/.well-known/acme-challenge/时,HAProxy会返回503 Service Unavailable - No server is available to handle this request.
原因很明显:HAProxy已经监听了WAN口的80端口,把ACME的独立HTTP服务器给“挡住”了,HAProxy不知道该把这类请求转发给pfSense本身的ACME服务,所以只能返回503错误。
我觉得应该配置一个后端,把匹配/.well-known/acme-challenge/路径的请求转发过去,但不知道在HAProxy里该怎么配置这个后端才能和ACME的独立HTTP服务器兼容。
我试过把后端目标设为127.0.0.1:80或者主机自身的IP:80,然后在前端添加对应ACL条件的动作,把请求转发到这个后端,但不管是平时测试还是用Let's Encrypt测试环境发起挑战,依然会收到503错误(不是因为独立服务器没启动的问题)。
请问该怎么配置才能让ACME的独立HTTP服务器和HTTP转HTTPS重定向共存,互不影响呢?
备注:内容来源于stack exchange,提问作者Martin Braun

