HAProxy HTTP转HTTPS重定向时Host头被篡改的解决问询
解决HTTPS重定向时Host头被篡改的问题
方案1:强制使用固定域名重定向
直接在重定向规则里指定目标域名,忽略请求中的Host头,确保重定向地址始终正确。修改后的配置如下:
redirect location https://example.com%[capture.req.uri] code 301 if !{ ssl_fc }
%[capture.req.uri]会保留原请求的路径部分,比如用户访问http://example.com/path时,即便Host头被篡改,也会被重定向到https://example.com/path。
方案2:校验Host头合法性后重定向
如果服务需要支持多个合法域名,可以先定义合法Host的白名单,仅对符合条件的请求执行重定向:
- 定义ACL匹配合法Host:
acl valid_host hdr(host) -i example.com www.example.com
-i表示忽略大小写,确保Example.com这类格式的请求也能匹配。
2. 结合SSL状态和Host校验执行重定向:
redirect scheme https code 301 if !{ ssl_fc } valid_host
- 可选:拦截非法Host的请求
如果需要拒绝携带恶意Host头的请求,可以添加规则:
http-request deny if !valid_host
这样非法Host的请求会直接被拒绝,不会触发错误的重定向。
内容的提问来源于stack exchange,提问作者Guy Incognito
相关产品推荐
相关产品推荐

