为halo博客添加ssl证书(配合nginx反向代理)

前言

注:本教程并不是每一个步骤都十分详细,但是关键步骤都给到了,仅作一个参考
本教程的实验环境:阿里云一台,腾讯云一台,阿里云有halo博客,腾讯云为nginx服务器,先前已经配置好为halo博客的nginx反向代理服务器,现在我们要为nginx添加ssl证书。

关于先前配置的反向代理:
起初这个腾讯云的nginx是yum拉取的,然后直接在/etc/nginx/conf.d/中添加halo.conf,内容如下:

upstream halo_server{
  xx.xx.xx.xx:8090;
}
server{
listen 80;
server_name halo;
location  {
prxoy_pass http://halo_server
}
}

简易版的反向代理便做好了。

添加ssl证书

域名是腾讯云的,于是进去申请对应域名的免费的ssl证书,点击证书详情可以下载证书:

由于网上关于nginx添加ssl证书的教程都是源码安装的,于是我就把先前的nginx直接yum remove了(保留了其/etc/nginx目录,里面的halo.conf我们可以留着复用),先跟着网上教程做来看看

下载源码,编译安装:

wget http://nginx.org/download/nginx-1.9.9.tar.gz  
tar zxf nginx-1.9.9.tar.gz
cd nginx-1.9.9
./configure --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module
make && make install

关于源码安装nginx的更多细节:https://www.cnblogs.com/sillage/p/14753649.html

在其主配置文件/usr/local/nginx/conf/nginx.conf,http{ }中我加入了一句include /etc/nginx/conf.d/halo.conf;
把之前的halo的配置文件包括进去(你也可以把halo.conf放在其他位置,绝对路径正确即可)
然后对halo.conf进行修改添加ssl证书:

upstream halo_server{
        server XX.XX.XX.XX:8090;
}
server {
    listen 80;
    listen 443 ssl;
    server_name  halo;
ssl on;
ssl_certificate /etc/nginx/cert/Nginx/1_XXXX.crt;#从腾讯云下载的证书相关文件,存放路径自定义
ssl_certificate_key /etc/nginx/cert/Nginx/2_XXXX.key;#从腾讯云下载的证书相关文件
ssl_session_timeout 5m;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
ssl_prefer_server_ciphers on;
    location / {
        proxy_pass  http://halo_server;
   }
}

按照上述这么操作其实我觉得,就在yum拉取的nginx环境中,对halo.conf添加如上内容,也应该是没有问题,这个请读者自行探索

由于我的域名启用了cdn,去cdn域名管理添加https,强制跳转建议开启并设置为http强制跳转为https,基础设置里,有个回源协议,可以选择协议跟随:

然后去halo博客后台为将网站链接改为https形式,如果访问提示网站并不完全安全,那么是因为网站中还包含有http形式的链接,我检查了一圈,发现是头像的原因,于是将头像换为https形式后就ok了:

添加ssl证书后,halo博客为文章添加访问密码的功能也就可以使用了,亲测可用。

教程到此便结束了

作者:
除特别声明为原创博文外,均可转载,也欢迎转载,未经作者同意必须在文章页面给出原文链接,否则保留追究法律责任的权利,谢谢您的配合。
原文地址:https://www.cnblogs.com/sillage/p/14968123.html