如何为 wordpress 添加 ELB 并启用 https

一、架构

我们有的时候会遇到这样的情况,我们的 wordpress 的服务器是提供 http 服务的,我们现在需要在前面添加一个负载均衡,配置用户和负载均衡之间使用 https 协议,负载均衡到 apache 之间使用 http 协议

二、问题

2.1、遇到的问题

如果我们这样设置的话,会导致一些页面不正常,因为 css 文件还有 js 文件会被浏览器拦截,这是因为浏览器为了安全,会拦截 https 页面中的一些 http 链接。

https://developers.google.com/web/fundamentals/security/prevent-mixed-content/fixing-mixed-content

2.2、造成原因的原理

据我所了解,当 wordpress 会根据用户的请求,返回的文档中包含不同的链接:

如果用户使用 http 访问 wordpress,wordpress 返回的文档中的链接,协议都是 http 的,
如果用户使用 https 访问 wordpress,wordpress 返回的文档中的链接,协议都是 https 的。

我们目前遇到的情况就是,ELB 使用 http 访问 wordpress,所以 wordpress 返回给 ELB 的链接是 http 的,然后返回给浏览器这些链接,浏览器就使用 http 向 ELB,这就导致了上面的问题。

三、解决

我们需要添加一些配置,告诉 wordpress,当用户使用 http 请求的时候,给它返回 https 协议的链接。

3.1、修改 apache 配置文件

<VirtualHost *:80>
...
SetEnvIf x-forwarded-proto https HTTPS=on

RewriteEngine On
RewriteCond %{HTTP:X-Forwarded-Proto} !https
RewriteRule ^.*$ https://%{SERVER_NAME}%{REQUEST_URI}
...

3.2、对于 nginx

修改为如下

server {
        ...
        location / {
                 ...
            proxy_set_header X-Forwarded-Protocol $scheme;
          }
  }

3.2、修改 wordpress 配置文件

修改文件wp-config.php,在最后新增如下内容

if (strpos($_SERVER[‘HTTP_X_FORWARDED_PROTO‘], ‘https‘) !== false)
    $_SERVER[‘HTTPS‘]=‘on‘;

下面这部分内容,我添加与否好像效果是一样的,如果没有生效,大家可以添加在上面配置文件的前面

define(‘WP_SITEURL‘, ‘https://‘ . $_SERVER[‘HTTP_HOST‘] . ‘/‘);
define(‘WP_HOME‘, ‘https://‘ . $_SERVER[‘HTTP_HOST‘] . ‘/‘);

https://community.bitnami.com/t/aws-load-balencer-is-configured-for-https-but-app-receives-http-requests/51228/12

原文地址:https://blog.51cto.com/wzlinux/2485628

时间: 2024-10-20 23:21:42

如何为 wordpress 添加 ELB 并启用 https的相关文章

WordPress启用https配置

随着移动互联网的发展,尤其以iPhone一枝独秀,强力推动https的落地,加之一些证书提供商的推波助澜,当下如果一个小站不支持https是个大跌眼睛的事件.说说小站启用https的过程 证书申请 这段故事比较长,参见<<基于certbot-auto申请免费https证书>>. nginx配置启用https server { listen 80; listen 443 ssl; server_name blog.cnrainbird.com; if ($scheme = http)

WordPress整站轻松开启HTTPS

近两年来HTTPS取代HTTP已经成为大势所趋.早在2014年google Chromium安全团队提议将所有的HTTP协议网站标注为不安全.现在,Chrome浏览器已经开始执行这一标准了.从 Chrome 56 开始,任何网页,如果有输入密码或者信用卡资料的,却没有使用 HTTPS,将被 Chrome 浏览器标识为不安全:逐步的,任何没有使用 HTTPS 协议的网页chrome浏览器都会被标识为”不安全”,或者 “Not Secure”. 从chrome 56 版本开始,查看网站的SSL证书的

【转】Tomcat启用HTTPS协议配置过程

转载请注明出处: http://blog.csdn.net/gane_cheng/article/details/53001846 http://www.ganecheng.tech/blog/53001846.html (浏览效果更好) 本文将讲解HTTPS协议在Tomcat中启用是如何配置的. 1. 概念简介 Tomcat 服务器是一个免费的开放源代码的Web 应用服务器,属于轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试 JSP 程序的首选. HTTP

架设证书服务器 及 让IIS启用HTTPS服务

无废话图文教程,教你一步一步搭建CA服务器,以及让IIS启用HTTPS服务. 一.架设证书服务器(CA服务) 1.在系统控制面板中,找到“添加/删除程序”,点击左侧的“添加/删除windows组件”,在列表中找到“证书服务”,安装之. 2.CA类型,这里有四种选择,这里以“独立根CA”为介绍. 3.CA识别信息,这里可以为你的CA服务器起个名字. 4.证书数据库设置,用于保存证书的相关数据库和日志文件,这个默认就行了. 5.安装完成后,在 控制面板 - 管理工具 中就可以打开 证书颁发机构,这个

#iOS开发常用方法集锦#如何为UIView添加居中背景

?本文永久地址为?http://www.cnblogs.com/ChenYilong/p/4103050.html,转载请注明出处. Evernote印象笔记:https://app.yinxiang.com/shard/s22/sh/2fe4cb0f-26cb-47ce-8569-bb45451cb7b8/6118d5a054003de9 //如何为UIView添加居中背景 #define kBackgroundImageCenterForView(ViewName,imageName)\ U

如何为SparkSQL添加hive中支持的而SparkSQL暂未支持的命令

以ANALYZE为例描述 ANALYZE在Hive中的使用方法详见:https://cwiki.apache.org/confluence/display/Hive/StatsDev#StatsDev-ExistingTables ANALYZE在Hive中使用简单介绍 一张表有4个分区: Partition1: (ds='2008-04-08', hr=11) Partition2: (ds='2008-04-08', hr=12) Partition3: (ds='2008-04-09',

现在就启用 HTTPS,免费的!

现在就启用 HTTPS,免费的! 现在,你应该能在访问https://konklone.com的时候,在地址栏里看到一个漂亮的小绿锁了,因为我把这个网站换成了HTTPS协议.一分钱没花就搞定了. 为什么要使用HTTPS协议: 虽然SSL并不是无懈可击的,但是我们应该尽可能提高窃听成本 加密通讯不应心存侥幸,所有连接都应被加密 福利: 使用了HTTPS之后,如果网站的访客是从其他已经使用了HTTPS的网站上跳转过来,你就能在Google Analytics中获取更完整的来源信息(比如Hacker

Tomcat启用HTTPS协议配置过程

本地模拟测试开启过程 HTTPS 如果生产环境应用在域名上是需要直接或间接的从 CA 申请证书,来取得浏览器的信任的.我们先在本地模拟测试一下这个过程,自己生成证书,后面介绍域名启用 HTTPS. ① keytool工具生成证书 打开 JDK 自带的 keytool 目录. 下面简要介绍一下. 密钥库口令:123456(这个密码非常重要) 名字与姓氏:192.168.0.110(以后访问的域名或IP地址,非常重要,证书和域名或IP绑定) 组织单位名称:anything(随便填) 组织名称:any

nginx启用https

接着上一篇,安装完Nginx之后,启用https 1.打开https://freessl.org, 在输入框中填写你的域名,创建免费的证书 按要求输入邮箱地址,然后点击"点击生成" 登录域名管理平台添加解析记录,记录类型选TXT,主机记录选上图的TXT记录,记录值对应记录值.然后等2分钟后点验证.或者添加完DNS解析后,可以点手动验证然后会产生一个证书文件和一个私钥文件,可以下载 这两个文件就是我们要用的. Vim /etc/nginx/nginx.conf,把下面的选项启用,添加证书