刚搭建好自己的个人站,看到谷歌浏览器地址栏最前面标着“不安全”三个字,还是挺不爽的,所以就顺便配置一下SSL加密。

如果你用的是阿里云的服务,那么配置SSL挺简单的。

首先去阿里云购买免费的SSL证书,有效期一年,到期以后再免费续期。

p39167.jpg

这是我在阿里云文档里找到的一个截图,下载里面的nginx压缩包。

解压后的文件夹中有2个文件:
证书文件:以.pem为后缀或文件类型。
密钥文件:以.key为后缀或文件类型。

p33690.png

我用的是ubuntu server服务器,那么nginx默认安装位置是在:/etc/nginx/

在此目录下创建cert目录,并把证书文件(.pem)和密钥文件(.key)上传到此目录。

20200417155942.jpg

然后打开nginx配置自己网站的配置文件,把 server {} 这段内容复制粘贴一份,增加以下配置。

server {
    # SSL configuration
    listen 443 ssl default_server;    #端口改为443,并加上ssl标记,提升兼容性
    listen [::]:443 ssl default_server;  #这段是ipv6的配置,也是把端口改为443

    ssl on;   # 开启SSL
    ssl_certificate cert/domain.com.pem; #证书文件地址
    ssl_certificate_key cert/domain.com.key; #密钥文件地址
    ssl_session_timeout 30m;      #会话过期默认5分钟,我改成了30分钟
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;  #指定使用哪些加密协议,SSLv1 SSLv2不安全,不建议使用
    ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4; #加密套件
    ssl_prefer_server_ciphers on; #指定服务端加密套件优先

}

保存nginx配置文件后,退出。

重启nginx。
新版本的nginx已经不再支持以前的重启命令
所以可以用新的重启命令
先用命令检查一下nginx配置是否正确

nginx -t

20200417162908.jpg

再用命令找到nginx服务的进程号

ps -ef | grep nginx

20200417163036.jpg

然后用命令平滑重启,不影响nginx继续运行

kill -HUP 进程号

20200417163850.jpg

实现http强制跳转https的方法

我所查到,有多种跳转方法,最后我选择了这一种。

server {
    listen 80;
    listen [::]:80;

    server_name www.domain.com;

    return 301 https://$server_name$request_uri;  # 在http配置处加上这句即可
}

--End--

参考资料:
在Nginx/Tengine服务器上安装证书
nginx配置SSL(https)