【问题标题】:Drupal - Mixed content error when using ssl certificateDrupal - 使用 ssl 证书时出现混合内容错误
【发布时间】:2016-03-25 14:52:23
【问题描述】:

我的 drupal 安装工作正常。我试图将那个迁移到在 nginx 反向代理后面运行的 Docker 容器上。一切似乎都很好,但我有一些无法加载的 .js 和 .css 文件,因为在 drupal 中它们与 http 链接。错误是:

Mixed Content: The page at https://proxy.xx.xx/ was loaded
over HTTPS, but requested an insecure stylesheet
http://proxy.xx.xx/sites/default/files/css/css_xE-rWrJf-
fncB6ztZfd2huxqgxu4WO-qwma6Xer30m4.css'. This request has been
blocked; the content must be served over HTTPS.

我有 7 个类似的文件,但我找不到这些文件在 drupal 中的调用位置或如何将 http 更改为 https。

最好的问候。

【问题讨论】:

    标签: ssl drupal drupal-7


    【解决方案1】:

    好的,所以我开始工作,将以下内容添加到 Drupal settings.php:

    $conf['reverse_proxy'] = TRUE;
    $base_url = 'https://whatever-your-domain-is.com';
    $conf['reverse_proxy_addresses'] = array('internal_nginx_proxy_ip');
    $conf['reverse_proxy_header'] = 'HTTP_X_FORWARDED_FOR';
    

    这适用于 jwilder 的 nginx-proxy 容器以及 JrCs 的 letsencrypt companion 容器。 nginx 容器正在处理 HTTPS/SSL(证书)并在内部与 Drupal 容器进行 HTTP 通信。 Drupal 容器只需要与 3 个 ENV VARS VIRTUAL_HOST、LETSENCRYPT_HOST、LETSENCRYPT_EMAIL 一起运行,即可设置所有内容并发挥其魔力。

    唯一的缺点:Drupal 容器的 apache 日志显示 nginx 代理的内部 IP。但是 nginx 日志显示了正确的客户端 IP,而且 Drupal 显然也得到了正确的结果,所以这对我来说只是一个小麻烦。

    我猜对 settings.php 的添加也应该适用于自定义/手动设置。

    【讨论】:

      【解决方案2】:

      我们发现了问题所在。 Drupal 在没有 ssl 的情况下与 Nginx 代理通信。一些配置,没问题。

      【讨论】:

      • 能否请您详细说明解决此问题的配置更改,以便帮助未来的用户?
      • 可能他们启用了从 Nginx 代理到 Drupal 的 SSL 流量。首选@Wilhelm Uschtrin 的解决方案,因为它的性能更高(没有双重 SSL 加密)并且配置更简单(您只需在外部端配置 SSL,在这种情况下是 Nginx 代理)。
      • 这是一回事吗?给自己“正确答案”标志?
      猜你喜欢
      • 1970-01-01
      • 2013-08-11
      • 1970-01-01
      • 2015-04-29
      • 2020-02-01
      • 1970-01-01
      • 2023-03-08
      • 2021-11-17
      • 2021-09-13
      相关资源
      最近更新 更多