又见hexo+SSL

前文

将hexo部署在了vps上,使用nodejs执行$ hexo s以维持生态,猛然发现以这种方式操作,写完稿子还要本地push然后远端pull两次操作,还得处理图床,实在是太麻烦了,尤其到扯上插件、主题的部署更是爆炸,再三考虑后还是换Github Page吧。

既然脱离开了nodejs应用的端口占用,老nginx就有机会换上SSL大法。

Hexo 本地部署

在_config.yml中设置好deploy,并关联好ssh-key,以实现直接用$ hexo d来完成同步。

1
2
3
4
deploy:
type: git
repo: https://github.com/timrockefeller/timrockefeller.github.io
branch: master

进入仓库的设置界面勾选Github Page即可,与此同时可以选用SSL。

跨域SSL

在一个以HTTPS访问的页面上,客户端会默认阻止访问HTTP,无论是否跨域。

然而当某些插件部署在vps上时(另一个二级域名),就不得不搞个SSL。

  1. 启用

    创建一个nodejs的小服务后(如websocket或是简单的action),服务的API往往需要通过域名转发出去。

  2. 设置转发

    稍微配置一下nginx:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    server
    {
    listen 80;
    server_name api.kitekii.pw;
    index index.html;
    root /path/to/www;
    location ~ api.* {
    proxy_pass http://0.0.0.0:8888;
    }
    }

    本地还是使用http在域内转发,这个端口这么吉利,以后肯定得改(咦)。

  3. 配置SSL

    暂用Let’s Encrypt(逃),概不细述~~

    添加对listen 443 ssl http2;的监听即可。

  4. api允许跨域

    在nginx配置的location项中添加add_header 'Access-Control-Allow-Origin' '*';即可实现。

手贱

千万不要把443绑到其他地方去了!!当初就不该跟着教程走,无意间将443绑给了科学上网服务……虽然当时确实能躲避某种操作,可现在看来已无卵用orz。

Share