0%

部署 HTTPS 网站

为什么要升级为 HTTPS?

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

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

所以要升级为 HTTPS。

申请 SSL 证书

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

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

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

配置证书到 nginx

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

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

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

1
2
3
4
[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 文件就是证书文件(别的设置也不懂,以后懂了再改吧,都用的默认):

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
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:

1
nginx -s reload

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

转发 HTTP 至 HTTPS

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

1
2
3
4
5
6
7
8
9
10
11
12
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