阿里云 ECS 网站安装 SSL 证书和设置伪静态的问题

作者: 蒋老师 分类: 电脑技巧 发布时间: 2019-09-06 00:10

  上篇已经介绍,蒋老师已经成功地将博客从阿里云主机迁移到了云服务器,但还有几个方面多少有些让人遗憾,例如:没有安装 SSL 证书上导致 Chrome 等浏览器提示“不安全”;不能伪静态导致文章的“固定链接”只能用“朴素”,不利于 SEO 等,本文主要介绍这些问题的解决之道理。

  一、申请阿里云的免费 SSL 证书

  在阿里云首页菜单中点击“产品分类”选择“安全”中的“SSL 证书”,也可以点击这里进入。不难发现,阿里云的 SSL 证书不是一般的贵,点击“Symantec”(页面上显示的赛门铁克证书仍然是超级贵),点击该类别下方的“前往售卖页面查看更多”,选择最后一项的“免费型 DV SSL”。

  随后的操作,按提示操作就可以了,当然,你只能申请一年期的免费证书(过期可以重新申请)。申请时要进行域名认证(证明域名是你的),建议采用 DNS 认证。另外,证书需要审核才能颁发(阿里云的速度还是不错的)。

  证书审核成功后,阿里云会用短信、邮件等形式通知你审核通过,可以在相应位置下载证书文件,下载时要搞清楚你使用的 web 服务器(我使用的是 nginx)。

  将下载的证书文件按“帮助”所示进行配置,可惜的是,使用 https 仍然无法访问。

  二、使用证书遇到的问题

  按照官网的“帮助”配置后,使用 https 仍然无法访问,显示:403 Forbidden

  首先研究了一下官网的“帮助”,发现文件有点旧,作了如下修改:

  将 listen 443; 修改为: listen ssl 443;

  注释掉:ssl on;

  结果仍然显示:403 Forbidden

  联系阿里云客服,建议我将 servername 中的 localhost 改为自己的域名,故障仍然。

  阿里云的售后工程师表示,这个不属于他们的支持范围,但愿意友情帮助查一下故障,需要给他们授权,包括提供远程密码、实例用户名和密码。

  授权后,售后工程师要我先创建快照(快照是要钱的,而且不便宜),当我表示暂时不想创建快照(没有回滚的需要)后,售后工程师要我明确承诺“本人已清楚并自愿承担风险,请阿里云在快照未完成时即对本人使用的服务器进行排查”后,开始进行检查。可惜的是,售后工程师只表示证书没有问题,要我在 nginx.conf 中加上 index.php 试试,其实原来我也加过,但访问后变成了下载该文件。

  跟阿里云售后工程师交流没有达到理想效果,只好继续在网上找,终于找到了解决方案,加上:

location ~ \.php{
root html;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /usr/local/nginx/html$fastcgi_script_name;
fastcgi_split_path_info ^(.+\.php)(.*)$; #增加这一句
fastcgi_param PATH_INFO $fastcgi_path_info; #增加这一句
include fastcgi_params;
fastcgi_param HTTPS on;
}
location / {
root html;
index index.php index.html index.htm;
if (!-e $request_filename){
rewrite ^/(.*)$ /index.php/$1 last;
}
}

location ~* \.(jpg|jpeg|png|gif|webp)$ {
expires 30d;
}
location ~* \.(css|js)$ {
expires 7d;
}
}

  终于,可以成功访问了!

  三、http 强制跳转 https 的问题

  多少还是有些遗憾,现在是用 http 和 https 都能访问,需要将 http 强制跳转到 https

  解决方法是:

server {
listen 80;
server_name localhost;
rewrite ^/(.*) https://$host$1 permanent; # 加入这一句

  可喜的是,加入这一句后,原来“固定链接”中不能使用的伪静态现在也能使用了。