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
2include /etc/nginx/conf.d/*.conf;
include /etc/nginx/sites-enabled/*; -
cert
目录是接下来操作中要手动创建的,用于存放申请到的ssl证书
-
-
ssl证书:阿里云免费申请,这里不再介绍详细的申请过程,如需要自行查找
操作
-
首先进入
/etc/nginx
目录下,创建一个cert
文件夹,将申请到的文件放到该文件夹下:1
2
3cd /etc/nginx
sudo mkdir cert两个文件的扩展名分别为:
.key
和.pem
。(转移文件过程不再展示) -
这次会在
sites-enabled
下重新创建一个配置文件以配置server,所以如果在/etc/nginx/sites-enabled/default
下或者/etc/nginx/nginx.conf
下配置过相关server信息的,先全部注释掉 -
进入
sites-enabled
目录,新建一个名为:cnhuazhu.conf
的配置文件(文件名任意)1
2
3cd 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
22server {
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端口
} -
最后重新启动Nginx服务
1
sudo service nginx restart
-
此时访问http://cnhuazhu.top/就会重定向到https
可能遇到无法访问的情况
-
去到阿里云,在服务器的
安全组
中开放443
端口 -
云服务器的防火墙开启
443
以及80
端口命令如下:
首先安装
firewalld
1
sudo apt install firewalld
增加
443
和80
端口1
2sudo 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
后记
继续努力!!!!
参考文章: