Mar 14, 2020教程710 words in 5 min


Nginx站点配置SSL

本文接上一篇CentOS下使用Nginx+Git部署hexo

服务器端

  1. 在nginx文件夹下新建一个目录用来存放证书

    1
    2
    $ cd /etc/nginx
    $ mkdir cert
  2. 打开配置文件

    1
    $ vim /etc/nginx/nginx.conf

    如果你的server节点在引用的文件中,请打开相应文件,如:

    1
    $ vim /etc/nginx/conf.d/default.conf

    不熟悉vim的基本操作话,请看文章开头的链接

  3. 在配置文件中新增一个https的 server节点

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    server {
    # 服务器端口使用443,开启ssl, 这里ssl就是上面安装的ssl模块
    listen 443 ssl;
    # 域名,多个以空格分开
    server_name hack520.com www.hack520.com;

    # ssl证书地址
    ssl_certificate /etc/nginx/cert/ssl.pem; # pem文件的路径
    ssl_certificate_key /etc/nginx/cert/ssl.key; # key文件的路径

    # ssl验证相关配置
    ssl_session_timeout 5m; #缓存有效期
    ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4; #加密算法
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2; #安全链接可选的加密协议
    ssl_prefer_server_ciphers on; #使用服务器端的首选算法

    #location节点,如果是按照上一篇教程的设置,这部分不需修改
    location / {
    root html;
    index index.html index.htm;
    }
  4. 配置http重定向https

    在配置文件中找到http的server节点,注释掉原有的部分,添加以下配置

    1
    2
    3
    4
    5
    listen 80;
    server_name localhost; #将localhost修改为您证书绑定的域名,例如:www.example.com。
    rewrite ^(.*)$ https://$host$1 permanent; #将所有http请求通过rewrite重定向到https。
    location / {
    index index.html index.htm;
  5. 保存文件并退出

客户机端

  1. 进入服务器的控制台,配置安全组设置,打开用于https的服务器443端口

  2. 为你的域名申请一个SSL证书,本文使用的是阿里提供的,由赛门铁克签发的免费一年证书。

  3. 下载证书文件,解压后其中有两个后缀为.pem.key的文件

  4. 重命名为ssl.pemssl.key

  5. 打开终端使用scp命令上传文件到服务器

    scp语法格式scp local_file remote_username@remote_ip:remote_folder

    1
    2
    3
    4
    5
    $ scp local_file/ssl.pem remote_username@remote_ip:/etc/nginx/cert/
    $ scp local_file/ssl.key remote_username@remote_ip:/etc/nginx/cert/
    # local_file替换成本地文件的路径
    # remote_username替换成服务器的用户名
    # remote_ip替换成服务器的IP

服务器端

  1. 测试配置文件是否有问题

    1
    $ nginx -t

出现以下字样说明配置正确,如报错,根据错误修改

1
2
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
  1. 重启Nginx

    1
    $ service nginx restart
  2. 打开浏览器测试

参考
《Nginx 安装 SSL 配置 HTTPS 超详细完整全过程》
《在Nginx/Tengine服务器上安装证书》
封面图片来源 kinsta.com
2020.03.14

  • Author:

    白桦 Birch

  • Copyright:

    Attribution-NonCommercial-NoDerivatives 4.0 International(CC BY-NC-ND 4.0)

  • Updated:

    December 14, 2020

Buy me snacks 🍩.