部署 HTTPS 网站

为什么要升级为 HTTPS?

原因就三条:安全,安全,还是 TMD 安全。

任谁也不喜欢自己的网站在浏览器中会显示出这么个东西的:

所以要升级为 HTTPS。

申请 SSL 证书

我去的是 腾讯云,个人申请的免费版。

按照提示点点点就完事了。

要审核,说是要一个工作日内就完成,其实十几分钟就能搞定,比域名备案快多了。

配置证书到 nginx

腾讯云-证书管理-控制台,下载证书。

证书加载下来是一个安装包,里面有我们的 csr 文件和适用于各种 web 服务器的文件。

在我们 nginx 的安装路径中的 conf 目录下创建一个文件夹 cert,把压缩包中 Nginx 中的两个文件全都放到这个文件夹里面:

[root@VM_0_16_centos cert]# pwd
/opt/tengine23/conf/cert
[root@VM_0_16_centos cert]# ls
1_sliu.vip_bundle.crt  2_sliu.vip.key

nginx 有些得很详细的 https 虚拟主机配置,我们把它找到,取消注释稍作修改即可:

只需将证书文件输入进入即可,我们没有 .pem 文件,那个 .crt 文件就是证书文件(别的设置也不懂,以后懂了再改吧,都用的默认):

server {
    listen       443 ssl;
    server_name  localhost;

    ssl_certificate      cert/1_sliu.vip_bundle.crt;
    ssl_certificate_key  cert/2_sliu.vip.key;

    ssl_session_cache    shared:SSL:1m;
    ssl_session_timeout  5m;

    ssl_ciphers  HIGH:!aNULL:!MD5;
    ssl_prefer_server_ciphers  on;

    location / {
        proxy_pass   http://localhost:4000;
    }
}

平滑重启 nginx:

nginx -s reload

输入网址 https://sliu.vip 测试一下,成功了,域名旁边也没了不安全的标识:

转发 HTTP 至 HTTPS

为了兼容原来 80 端口的 HTTP 方式的访问,可以将 80 端口的访问请求全部转发到 443 端口上,增加配置如下:

server {
    listen       80;
    server_name  your-domain.com;

    location = / {
        rewrite ^(.*) https://your-domain.com/$1 permanent;
    }

    location / {
        rewrite ^(.*) https://your-domain.com/$1 permanent;
    }
}

参考文章

  1. Nginx配置HTTPS