在pfSense上通过HAProxy配置公网可访问的Guacamole服务器遇到问题,寻求排查帮助
看起来你在配置HAProxy反向代理Guacamole的过程中碰到了不少卡点,我来帮你梳理下可能的排查方向,一步步来定位问题:
先确认Split DNS配置是否生效
在本地客户端的命令行里执行nslookup guac.yourdomain.com(替换成你的实际域名),查看返回的IP地址:- 如果返回的是Guacamole的真实IP,说明Split DNS没生效,本地请求直接绕开了HAProxy。而你设置的是HAProxy做SSL卸载,Guacamole本身只提供HTTP服务,这时候用域名访问(默认走HTTPS)就会出错,自然返回503。
- 如果返回的是HAProxy的VIP,那这一步没问题,继续往下排查。
检查HAProxy的ACL与后端匹配规则
登录pfSense的HAProxy管理界面:- 查看443前端的ACL规则,确认针对guac子域名的规则是否准确,比如是不是用了
hdr(host) -i guac.yourdomain.com这类配置,有没有拼写错误(比如域名少打了字符)。 - 确认匹配到该ACL后,流量是否正确转发到Guacamole对应的后端(要注意Guacamole的默认端口是8080,后端配置里要填对IP和端口)。
- 如果开启了HAProxy的Stats页面,访问它可以直观看到请求是否命中了对应的ACL,以及后端服务器的状态是
UP还是DOWN——要是后端显示DOWN,那503的原因就是HAProxy连不上Guacamole后端。
- 查看443前端的ACL规则,确认针对guac子域名的规则是否准确,比如是不是用了
验证HAProxy到Guacamole的连通性
登录pfSense的Shell,执行curl http://[guac真实IP]:[端口]/guacamole/(替换成实际的IP和端口),看看能不能正常返回页面内容:- 如果连不上,可能是pfSense到Guacamole的防火墙规则被拦截了,或者Guacamole服务只监听了本地127.0.0.1(需要改成监听0.0.0.0,允许外部访问)。
查看HAProxy日志定位具体错误
在pfSense里开启HAProxy的日志功能,把日志级别设为info或者debug,然后再次用域名访问触发503错误,去系统日志里找HAProxy的相关记录。日志会明确告诉你是后端不可达、ACL不匹配,还是其他配置问题,这是排查这类反向代理问题最直接的方法。本地防火墙与NAT规则检查
虽然你已经配置了NAT把80/443转到HAProxy VIP,但要确认本地客户端访问HAProxy VIP的流量有没有被防火墙允许——有时候本地到VIP的规则可能被遗漏,导致请求被拦截,进而返回503。关于Cloudflare代理的补充说明
目前你的问题出在本地访问,Cloudflare代理暂时不是核心问题,但后续处理公网访问时,要注意Cloudflare的SSL模式(建议选「Full」或「Full(strict)」),确保Cloudflare和HAProxy之间的SSL通信兼容。
备注:内容来源于stack exchange,提问作者nepher ki3den

