首页 > 解决方案 > Haproxy Https 和 Vhost

问题描述

我是 Haproxy 世界的新手,经过几个小时后,我设法使用证书和 https 模式。但是现在我有一个新问题,似乎是由于目标服务器上的 Vhost。

我读到您需要创建一个指向虚拟主机的规则,当它通过域而不是加载网络时,会出现服务器的默认页面,因为它加载的是 IP 而不是域。

能给我举个例子?

    frontend www-https
    bind www.dominio.dev:443 ssl crt /etc/letsencrypt/live/sddd.net/1.pem
    mode http
    stats enable
    stats auth  cda:cda
    balance roundrobin

    option http-server-close
    option forwardfor
    http-request add-header X-Forwarded-Proto https
    http-request add-header X-Forwarded-Port 443
    http-response add-header Strict-Transport-Security max-age=15768000

    acl letsencrypt-acl path_beg /.well-known/acme-challenge/
  # use_backend letsencrypt-backend if letsencrypt-acl
    http-request redirect scheme https unless { ssl_fc }
    default_backend www-backend


backend www-backend
   redirect scheme https if !{ ssl_fc }
   #http-request redirect scheme https if http
   server www-1 www1.dominio.dev:443 ssl verify none
   server www-2 www2.dominio.dev:443 ssl verify none maxconn 5000
   server www-3 www3.dominio.dev:443 ssl verify none

标签: proxyhaproxy

解决方案


首先,haproxy 配置中的“bind”指令应该是您的 haproxy 服务器 ip adderss。
首先创建前端httpd、前端https和后端。

如果您在后台和 www1.dominio.dev、www2.dominio.dev、www3.dominio.dev 服务器上有从 http 到 https 的重定向,请禁用它并监听端口 80。Haproxy 会将 http 重定向到 https

这是一个例子:

frontend http
    bind haproxy_ip_address:80
    http-request add-header X-Forwarded-Proto http
    use_backend www-backend if { hdr(host) -i dominio.dev }

frontend https
    bind haproxy_ip_address:443 ssl crt /etc/letsencrypt/live/sddd.net/1.pem
    http-request add-header X-Forwarded-Proto https
    http-response replace-header  ^Server.* Server Microsoft-IIS/7.5
    http-response replace-header ^Set-Cookie:\ (.*) Set-Cookie \1;\ Secure if secure
    http-request add-header Strict-Transport-Security max-age=31536000;\ includeSubDomains;\ preload
    option http-server-close
    option http-keep-alive

    use_backend www-backend if { hdr(host) -i dominio.dev }
    use_backend www-backend if { req_ssl_sni -i dominio.dev }

backend www-backend
    mode http
    balance roundrobin
    option accept-invalid-http-response
    retries 3
    redirect scheme https if !{ ssl_fc }
    option forwardfor
    server www-1 www1.dominio.dev:80 ssl verify none
    server www-2 www2.dominio.dev:80 ssl verify none maxconn 5000
    server www-3 www3.dominio.dev:80 ssl verify none

另请检查配置是否有效:“haproxy -c -V -f /etc/haproxy/haproxy.cfg”


推荐阅读