混合内容 http https 和 haproxy

混合内容 http https 和 haproxy

我在使用 haproxy 和混合内容时遇到了问题。当我尝试通过 haproxy ssl 进行连接时,默认配置下的浏览器(在本例中为 Firefox 或 Chrome)会阻止混合内容 - 在本例中为 http 连接。当我尝试不使用 haproxy 进行连接时,不会发生这种情况。

什么原因造成此情况?

以供参考:

我已经安装了 haproxy 版本 1.5.11

haproxy -v HA-Proxy 版本 1.5.11 2015/01/31 版权所有 2000-2015 Willy Tarreau

使用以下配置:

global

log         127.0.0.1 local2

chroot      /var/lib/haproxy
pidfile     /var/run/haproxy.pid
maxconn     4000
user        haproxy
group       haproxy
stats timeout 30s
debug
daemon

# turn on stats unix socket
stats socket /var/lib/haproxy/admin.sock mode 660 level admin

# Default SSL material locations
ca-base /etc/ssl/certs
crt-base /etc/ssl/private

# Default ciphers to use on SSL-enabled listening sockets.
# For more information, see ciphers(1SSL).

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  dontlognull
timeout connect 5000
timeout client  50000
timeout server  50000


frontend  webphp53_http

bind *:80
bind *:443 ssl crt /etc/ssl/private/cert.pem
    mode http
default_backend webphp53_servers

backend webphp53_servers

mode http
    balance roundrobin
    option forwardfor
    http-request set-header X-Forwarded-Port %[dst_port]
    http-request add-header X-Forwarded-Proto https if { ssl_fc }
option httpchk HEAD / HTTP/1.1\r\nHost:localhost
server php53_node1 192.168.127.67:80 check
server php53_node2 192.168.127.68:80 check

答案1

如果域名不同,混合内容会被直接阻止。确保当您切换到使用负载平衡器时,页面中的混合内容使用相同的服务器名称。

答案2

我发现这个问题只发生在你使用 Drupal 和 Wordpress 这样的 CMS 时,我发现解决方案强制两者都使用 https,在 Drupal 编辑 sites/default/settings.php 的情况下取消注释该行:

$base_url = 'https://域名_blablabla';

对于 Wordpress,需要安装 Wordpress HTTPS (SSL) 插件https://wordpress.org/plugins/wordpress-https/

相关内容