· 尚可 · 工程技术 · 5 分钟阅读

hexo配置https

hexo配置https

hexo配置https

Hexo配置Https

之前折腾过WordPress,想弄个SSL玩玩,所以就去申请了免费的证书,一顿操作也就搞定了,现在觉得Hexo也不错,所以就换到了Hexo上,也打算把SSL弄过来。

网上有人说去修改~/your_hexo/node_modules/hexo-server/lib/server.js ,引入express ,然后就修改默认的端口为443就可以,别说,还真的可以,但是也出现了一些其他的问题,比如hexo有些命令无法执行,报错:80端口被占用。

我对前端的内容不是很了解,也就不想再去调试源码了,但是换个思路一想,其实只需要一个nginx转发一下就可以满足我的需求了,所以,那就动手把。

安装nginx

我目前的系统是Ubuntu 16.04,直接安装nginx,执行如下命令:

apt install nginx

上传证书

安装完毕之后,上传我们申请到的证书

cd /etc/nginx
mkdir ssl

之后将证书上传到新建的ssl文件夹下。

配置SSL并新增转发规则

新建nginx配置文件,监听80和443端口,另外将80端口的访问转发到443端口来

cd /etc/nginx/conf.d/
vi www.xxx.com.conf  # 这里我一般习惯用网站域名来命名

在新增的配置文件中写入如下内容:

server {
    listen 80;
    server_name www.xxx.com; # 这里写你的域名
    return 301 https://$server_name$request_uri;
}

server {
        listen 443 ssl;   #SSL协议访问端口号为443。此处如未添加ssl,可能会造成Nginx无法启动。
        server_name www.xxx.com;  #将localhost修改为您证书绑定的域名,例如:www.example.com。
        ssl_certificate ssl/xxx_public.crt;   #将domain name.pem替换成您证书的文件名。
        ssl_certificate_key ssl/xxx.key;   #将domain name.key替换成您证书的密钥文件名。
        ssl_session_timeout 5m;
        ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;  #使用此加密套件。
        ssl_protocols TLSv1 TLSv1.1 TLSv1.2;   #使用该协议进行配置。
        ssl_prefer_server_ciphers on;
        access_log  /var/log/nginx/hexo_access.log;
        error_log   /var/log/nginx/hexo_error.log;

        location / {
        		proxy_pass http://localhost:4000;  # 这里就是hexo server启动的默认端口
        }
}

文件保存完毕之后,由于nginx默认监听了80端口,所以需要将nginx默认监听的端口换掉(比如换成81,只要不被占用就行),需要修改如下文件:

vi /etc/nginx/sites-enabled/default

将默认监听的80换掉即可。

验证nginx配置是否正常,执行如下命令

nginx -t

没有错误提示即可!

重新加载nginx配置:

nginx -s reload

验证https是否生效

如果我们此时可以通过https正常访问,那么SSL的配置基本到此就结束了,如果访问不通,那么可以通过两个地方排查:

  1. hexo是否启动?如果没有启动,需要先执行hexo s指令,然后重试
  2. 服务器是否配置有白名单、防火墙之类的东西? 我目前是使用的云服务器,所以对80和443端口做了放行。

WordPress迁移带来的其他问题

  1. 由于之前使用的WordPress,迁移到Hexo之后,原来的链接(搜索引擎的快照)可能就失效了,所以为了避免出现通过搜索引擎无法访问的问题,最好找到那些失效的链接,然后在nginx里手动转发一下。

  2. 关于sitemap的问题,如果有需要,重新去生成一个sitemap.xml,然后在nginx中做好转发,然后提交给搜索引擎。

Share:
返回文章列表
Nginx中root和alias的区别
工程技术

Nginx中root和alias的区别

Nginx指定文件路径有两种方式:root和alias,他们的区别在于对location后面的URI的解释逻辑不同。 root 寻找文件的逻辑是:root路径+location路径 alias 寻找文件的逻辑是:使用al…

领域驱动设计
工程技术

领域驱动设计

复杂软件设计的解决方案 DDD是Domain-Driven Design(领域驱动设计)的简称,它是一种解决复杂软件设计的方法论,它试图分离技术实现的复杂性,并围绕业务概念构建的领域模型,以解决软件难以理解,难以演进的问…

什么是CAP定理
工程技术

什么是CAP定理

什么是CAP定理? CAP定理告诉我们,一个分布式系统不可能同时满足一致性(C:Consistency),可用性(A: Availability)和分区容错性(P:Partition tolerance)这三个基本需求,…