Nginx配置ssl证书(踩坑记录)

前言

当你看到这篇文章的时候,本站可以算是彻底搭好了(泪目~~~~

本篇记录一下Nginx如何配置ssl证书,以及踩过的坑。

碎碎念:

这段时间找了很多帖子,但是一直无法实现https访问,期间有尝试过宝塔,但是才发现宝塔的服务器路径不允许设置到/var下,因为前面基本已经搭建的差不多了,只剩证书没成功,所以不愿意再重新倒腾,想着下午再试一试,不成功就重新来吧。终于功夫不负有心人,让我找到了问题在哪里——防火墙增加443端口!!!!


正文

环境

  • 服务器:阿里云服务器(ECS)Ubuntu 20.04

  • Nginx:网上一些帖子(包括阿里云官方)给的目录都是在nginx.conf文件下一起配置,感觉并不太好

    本站Nginx的安装命令:

    1
    sudo apt-get install nginx

    目录结构如下/etc/nginx

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    ——
    │ fastcgi.conf
    │ fastcgi_params
    │ koi-utf
    │ koi-win
    │ mime.types
    │ nginx.conf
    │ proxy_params
    │ scgi_params
    │ uwsgi_params
    │ win-utf

    ├─cert
    ├─conf.d
    ├─modules-available
    ├─modules-enabled
    ├─sites-available
    ├─sites-enabled
    └─snippets

    说明:

    • 一切关于server的配置全部放到conf.d目录下(文件后缀为.conf)或是sites-enabled目录下(文件命名任意),如果配置出现了问题,可以直接删除该配置文件就好,并不会影响到默认的配置。个人建议尽量不要动nginx.conf文件,因为在该文件中已经引入了conf.d以及sites-enabled下的文件,涉及的代码如下:

      1
      2
      include /etc/nginx/conf.d/*.conf;
      include /etc/nginx/sites-enabled/*;
    • cert目录是接下来操作中要手动创建的,用于存放申请到的ssl证书

  • ssl证书:阿里云免费申请,这里不再介绍详细的申请过程,如需要自行查找

操作

  1. 首先进入/etc/nginx目录下,创建一个cert文件夹,将申请到的文件放到该文件夹下:

    1
    2
    3
    cd /etc/nginx

    sudo mkdir cert

    两个文件的扩展名分别为:.key.pem。(转移文件过程不再展示)

  2. 这次会在sites-enabled下重新创建一个配置文件以配置server,所以如果在/etc/nginx/sites-enabled/default下或者/etc/nginx/nginx.conf下配置过相关server信息的,先全部注释掉

  3. 进入sites-enabled目录,新建一个名为:cnhuazhu.conf的配置文件(文件名任意)

    1
    2
    3
    cd sites-enabled

    sudo vim cnhuazhu.conf

    写入如下配置信息:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    server {
    listen 443 ssl; #监听443端口
    server_name cnhuazhu.top; #域名
    root /var/www/blog-LeadPage; #项目的根目录
    index index.html index.htm;
    ssl_certificate cert/www.cnhuazhu.top.pem; #ssl配置文件(注意路径)
    ssl_certificate_key cert/www.cnhuazhu.top.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 TLSv1.3;
    ssl_prefer_server_ciphers on;

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

    server{
    listen 80; #监听80端口
    server_name cnhuazhu.top; #域名
    rewrite ^/(.*)$ https://cnhuazhu.top:443/$1 permanent; #重定向到443端口
    }
  4. 最后重新启动Nginx服务

    1
    sudo service nginx restart
  5. 此时访问http://cnhuazhu.top/就会重定向到https

可能遇到无法访问的情况

  • 去到阿里云,在服务器的安全组中开放443端口

  • 云服务器的防火墙开启443以及80端口

    命令如下:

    首先安装firewalld

    1
    sudo apt install firewalld

    增加44380端口

    1
    2
    sudo firewall-cmd --zone=public --add-port=443/tcp --permanent
    sudo firewall-cmd --zone=public --add-port=80/tcp --permanent

    重启防火墙

    1
    sudo firewall-cmd --reload

    如果没有问题,回显为:success


后记

继续努力!!!!

参考文章: