HA-Proxy 301 重定向:https 到 https://www

HA-Proxy 301 重定向:https 到 https://www

我正在尝试让 HA-Proxy 301 重定向 https 域。我需要:

https://example.com重定向至https://www.example.com

这就是我试图让它发挥作用的方法:

# corp - example.com
    redirect prefix https://www.example.com code 301 if { hdr(host) -i example.com }
    redirect prefix https://www.example.com code 301 if { hdr(host) -i www.example.com }
    acl server01 hdr_dom(host) -i www.example.com

我将非常感激您的帮助!

cfg 文件的编辑示例(底部的代码是 cfg 的一部分):

全球的
    日志/dev/log local0
    日志/dev/log local1 通知
    chroot /var/lib/haproxy
    用户 haproxy
    组 haproxy
    守护进程

默认值 记录全局 最大连接数 100000 模式 http 选项 httplog 选项 dontlognull 期权远期 超时连接 600000ms 服务器超时600000ms 客户端超时600000ms 错误文件 400 /etc/haproxy/errors/400.http 错误文件 403 /etc/haproxy/errors/403.http 错误文件 408 /etc/haproxy/errors/408.http 错误文件 500 /etc/haproxy/errors/500.http 错误文件 502 /etc/haproxy/errors/502.http 错误文件 503 /etc/haproxy/errors/503.http 错误文件 504 /etc/haproxy/errors/504.http

前端 main_http_proxy 绑定 *:80 模式 http http 请求添加标头 X-Forwarded-Proto https if { ssl_fc } 统计启用 统计 uri /haproxystatus?统计信息 统计领域 Strickly\ Private 统计验证 ec2ops:7is92kc81k92kds8

# example.com
#redirect scheme https code 301 if { hdr(host) -i www.example.com } !{ ssl_fc }
#redirect prefix  https://www.example.com code 301 if { hdr(host) -i example.com } !{ ssl_fc }
#redirect prefix https://www.example.com code 301 if { hdr(host) -i example.com }
#redirect prefix https://www.example.com code 301 if { hdr(host) -i www.example.com }
acl no_WWW hdr(host) -i example.com
redirect prefix www.example.com code 301 if no_WWW


# Backend Rules
use_backend SERVER01 if jcma01
use_backend SERVER01 if no_WWW

前端 main_https_proxy 绑定:443 SSL 证书 /etc/haproxy/pem/ 模式 http http 请求添加标头 X-Forwarded-Proto https if { ssl_fc } acl 安全 dst_port eq 443 rsprep ^设置 Cookie:\ (.) Set-Cookie:\ \1;\ 如果安全则为安全 rspadd Strict-Transport-Security:\ max-age=31536000 如果安全

use_backend SERVER01 if { ssl_fc_sni www.example.com } #use_backend SERVER01 if { ssl_fc_sni example.com }

后端server01余额源cookie SERVER01插入服务器SERVER01 10.10.10.10:80 cookie SERVER01检查inter 5s

答案1

不确定你从哪里得到这些 ACL,不会吧

redirect scheme https code 301 if !{ ssl_fc }

或者

redirect scheme https code 301 if {hdr(host) -i yourdomain.example.com } !{ ssl_fc }

是一个更清洁的解决方案吗?

答案2

我知道它已经过时了,但现在可以在 Haproxy 官方文档中找到答案:

frontend www
   bind :443
   acl has_www hdr_beg(host) -i www
   http-request redirect  code 301  location https://www.%[hdr(host)]%[capture.req.uri]  unless has_www
   use_backend webservers

https://www.haproxy.com/documentation/hapee/latest/traffic-routing/redirects/#redirect-traffic-to-a-location

相关内容