先说一下

上一篇讲了怎么在Centos8下安装Nginx,但是Nginx默认只能使用http访问,不仅不安全还无法支持谷歌Pwa特性。今天来说一下怎么给nginx安装ssl证书并启用https访问。
此次教程使用Centos8系统 Nginx版本为1.17.8,请确认安装Nginx的时候已经安装了SSL模板。

准备

要安装ssl呢,就需要先为站点申请一个ssl证书,推荐去阿里云申请,个人免费版一次最大免费时长一年。

申请过程就不写了,相信大多数人都会,不会的呢官方有教程文档。

证书下发成功之后,点击右边的下载,选择Nginx类型,然后再点击一次下载。

解压下载下来的压缩包,打开文件夹,里面应该会有一个pem后缀的文件和一个key后缀的文件。为了方便等会用,把它重命名一下,我这里重命名的是ssl,怎么方便怎么来。

开始

使用SSH登录上服务器,cdnginx的安装目录,新建一个用来存放证书的文件夹。并把证书上传到这个文件夹里面去(不知道怎么上传的可以用阿里云的对象存储,先上传到对象存储再用wget命令下载到文件夹里面)。上传完之后使用ls命令查看一下,确定目录里面有这两个文件。

1
2
cd /usr/local/nginx/
mkdir cert #新建的存放证书的文件夹,名字可以自定义,自己记得到就行

修改Nginx的配置文件,先给原来的80端口做一个跳转,使其跳转到Https这里的yourname填写你自己的域名 一定要是你自己的域名 别直接复制粘贴上去

1
2
3
4
5
6
server {
listen 80;
server_name yourname;
return 301 https://yourname$request_uri;

#charset koi8-r;

跳转配置好之后,再来配置配置ssl证书和开启ssl

这里一定要把前面的#符号删掉,不然配置不会生效。

yourname还是写你的域名。

ssl on前面如果你的nginx版本大于1.5,就得在前面加一个#号把它注释掉,不然会报错。nginx版本小于1.5的请忽略。

ssl_certificatessl_certificate_key后面都是写你的证书文件的位置,别写错了,一个是pem后缀,一个是key后缀。如果和我证书放置的文件夹不一样,那么一定要写你自己的

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
# HTTPS server
#
server {
listen 443 ssl;
server_name yourname;
#ssl on;
ssl_certificate /usr/local/nginx/cert/ssl.pem;
ssl_certificate_key /usr/local/nginx/cert/ssl.key;

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

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

location / {
root html;
index index.html index.htm;

}

}

查看

1
2
3
nginx -t
nginx -s stop
nginx

先输入nginx -t查看你配置文件是否可用,出现successful表示可用。
如果出现nginx: [emerg] the "ssl" parameter requires ngx_http_ssl_module in /usr/local/nginx/conf/nginx.conf:37则表示nginx安装的时候没有安装ssl模块,重新安装后再试。

在输入nginx -s stop停止nginx服务

接着输入nginx启动服务,在浏览器地址栏输入你的域名并回车,如果在网址的旁边出现一把小锁的话就说明ssl配置成功,已经启用Https了。 (忘了说,一定要先去云服务控制台放行443端口,不然无法访问(ง •_•)ง)