多站点Http升级Https协议全套解决方案(WordPress+ server 2008 R2 )

第一步:申请购买https(ssl证书)

  1. 去阿里云上直接申请的免费SSL证书

(PS:国内其他代理申请平台通过率不是很高,起先尝试过自己去神奇,也在西数代理申请过,都没有成功)

阿里云申请地址:https://www.aliyun.com/product/cas?spm=5176.10695662.782131.1.3ae471e9N6ocaQ

申请免费版:(如下图)

(PS:当然你也可以选择购买阿里云的收费版)

购买成功后,直接进入SSL管理后台: 点击证书申请=》按照步骤进行验证(验证教程阿里云有提供)=》等待一段时间=》审核通过=》下载对应系统的文件

(PS:如果未通过,调整后重新申请)

第二步:windows server 2008服务器+IIS7安装SSL证书(https多站点解决方案)

我服务器配置:Windows server 2008 R2  (原始IIS 7.5不支持https 多站点配置,也就是一个服务器无论有多少站点,只允许一个网站配置https)

解决方案:

  1. 为每一个https站点配置不同的访问端口,如443,444,445等,但是除了默认的443其它均要在域名后面添加端口号如:www.lixuepeng.com:445;该方法直接PASS;
  2. 为每一个站点配置不同的IP,目前造价过高;直接PASS,对于很考虑独立IP的域名(SEO配置)可以考虑该项;
  3. 购买收费版的统配证书,如一个证书支持多个域名;(收费较贵)-我也暂时不考虑;
  4. 把服务器升级为IIS8 ,那么windows系统也要升级为Windows server 2012 ;很明显会花费大量时间,暂且不考虑;
  5. 第五种解决办法:安装Nginx 反向代理实现IIS7.5 多站点配置https;

以下是第五种解决办法:

第五种解决办法如下(移步第三方):https://www.west.cn/faq/list.asp?unid=1450    (包括http301跳转到https的服务器以及单站解决方案)

 

第三步:安装配置多个站点支持https (windows server 2008+IIS7)

重复第一步、第二步的操作;

疑难1:网站能正常访问https,但是无法加载HTTP下的CSS与各类资源文件

现状:网站能正常访问,但是无法加载某些https下的CSS、JS、img等文件,导致页面显示错乱;如你的模板没有问题,那么多检查以前的老旧页面以及文章;

病因:默认https下,不调用http任何资源;这需要服务器给予浏览器指示希望浏览器加载http资源;

如图:http下的CSS文件未加载;

 

报错内容:

Mixed Content: The page at 'https://www.lixuepeng.com/' was loaded over HTTPS, but requested an insecure favicon 'http://www.lixuepeng.com/wp-content/uploads/2019/06/favicon.ico'. This request has been blocked; the content must be served over HTTPS.

 

解决方案:

  1. 把模板文件,以及其他所有文件在http下的调用全部修改过来;(几乎不可能,遇到网站老旧内容过多的更不可能)
  2. 让浏览器能自动识别,需要配置head头;---最佳解决方案;

 

详细流程:

  1. 打开Nginx 文件夹安装目录
  2. 打开conf文件夹
  3. 打开vhost文件夹
  4. 打开你要配置的域名文件 添加一段代码(用记事本打开添加)
  5. 重启Nginx服务器;

代码:(一个标点符号都不能少)

add_header Content-Security-Policy "upgrade-insecure-requests;connect-src *";

 

疑难2:wordPress后台无法进入:提示,重定向的次数过多

造成“ERR_TOO_MANY_REDIRECTS 将您重定向的次数过多”这种错误的原因其实就是 http 和 https 之间的访问重定向导致的

 

解决方案:

通过登录网站FTP或者网站主机的文件管理,找到网站根目录下的 wp-config.php 文件,将以下代码添加的该文件,即可完美解决此问题:

$_SERVER['HTTPS'] = 'on';

define('FORCE_SSL_LOGIN', true);

define('FORCE_SSL_ADMIN', true);

疑难3:http下的网页301跳转到https

设置301跳转

方法一:nginx站点配置文件中添加以下代码

server

{

listen 80;

server_name abc.com;

rewrite ^(.*) https://www.abc.com$1 permanent;           # abc.com对应修改为您自已的域名

}

方法二:web.config中添加以下代码

<?xml version="1.0" encoding="UTF-8"?>

<configuration>

<system.webServer>

<rewrite>

<rules>

<rule name="301" stopProcessing="true">

<match url="^(.*)$" ignoreCase="false" />

<conditions logicalGrouping="MatchAll">

<add input="{HTTP_FROM_HTTPS}" pattern="^on$" negate="true" />

</conditions>

<action type="Redirect" url="https://www.abc.com/{R:1}" redirectType="Permanent" />     #www.abc.com对应修改为您自已的域名

</rule>

</rules>

</rewrite>

</system.webServer>

</configuration>

 

别忘记301跳转成功与否的检查:

检查地址:http://tool.chinaz.com/pagestatus/

拿你的网站首页,栏目页,内容页分别检查下;

 

写在最后:

  1. 未来有机会把页面模板存在http的调用全部替换成https ,同时注意模板调用规范,不要写死,直接调用后台主域名URL配置即可;
  2. 未来有机会把老旧页面的http替换成https;
  3. 未来有机会希望各大建站厂商、模板制作者,包括协议在内 所有内部调用的头部部分均采用调用方式;