编辑我的 haproxy 配置后。我的所有子域现在都重定向到 https。我只希望我的 domain.com 重定向到 https,而不是我的子域。我该如何停止这种情况?以下是我的重定向脚本。
更新
global
log /dev/log local0
log /dev/log local1 notice
chroot /var/lib/haproxy
user haproxy
group haproxy
daemon
ca-base /ssl
crt-base /ssl
ssl-default-bind-ciphers kEECDH+aRSA+AES:kRSA+AES:+AES256:RC4-SHA:!kEDH:!LOW:!EXP:!MD5:!aNULL:!eNULL
defaults
log global
mode http
option httplog
option redispatch
option forwardfor
option dontlognull
option http-server-close
timeout connect 5s
timeout client 30s
timeout server 30s
timeout tunnel 1h
frontend public-front
bind *:80
redirect scheme https if !{ ssl_fc }
bind *:443 ssl crt domain.com.pem
use_backend some-back if { path_beg /somepath/ }
default_backend default-back
backend some-back
reqadd X-Forwarded-Proto:\ https
balance leastconn
option httpchk GET /somepath
timeout check 500ms
server some-back someback.domain.com:443 check-ssl ssl ca-file domain.com.pem inter 500ms
backend default-back
reqadd X-Forwarded-Proto:\ https
balance leastconn
option httpchk GET
timeout check 500ms
server default-back 127.0.0.1:8080 check-ssl ssl ca-file domain.com.pem inter 500ms
frontend stats-front
bind :8888 ssl crt domain.com.pem
default_backend stats-back
backend stats-back
stats enable
stats hide-version
stats realm Haproxy\ Statistics
stats uri /statistics
stats auth admin:password
我用https://domain.com作为我的主页,裸露或没有www,这指向
我使用的haproxyhttp://sub.domain.com用于其他内容,但访问主页后会重定向到 https。
HA-Proxy 版本 1.5.4 2014/09/02
答案1
从您的“公共前端”前端删除redirect scheme https if !{ ssl_fc }
并替换为:
redirect scheme https if { hdr(Host) -i domain.com } !{ ssl_fc}
redirect scheme https if { hdr(Host) -i www.domain.com } !{ ssl_fc}
应该可以满足您的要求。这些 URL 将重定向:
www.domain.com/
domain.com/
www.domain.com/someotherdirectory/
domain.com/thisisapage.html
这些不会:
www2.域名.com
子域名.com
www.sub.domain.com