Nginx配置及SSL证书部署
SSL实现网站HTTPS化
写在前面:本文用到的服务器为阿里的ECS云服务器,操作系统为 Ubuntu 22.04 64位
- 安装Nginx
Nginx在Ubuntu源仓库可用,直接apt安装即可安装完成后Nginx自动启动,可以通过以下命令确认:1
2sudo apt update
sudo apt install nginx1
ps -ef|grep nginx
- 配置防火墙
启用HTTP(80)端口和HTTPS(443)端口(如果没有安装ufw 请自行安装)查看防火墙状态1
2sudo ufw enable // 启用防火墙
sudo ufw allow 'Nginx Full' // Nginx Full 包含上述两个端口可以看到 Nginx Full 已启用(22端口用于SSH连接)1
sudo ufw status
- 申请SSL证书并部署
阿里提供了免费的SSL证书,填好相关信息申请后等待签发(十几分钟)
申请完成下载证书到本地,选择服务器类型为 Nginx
在 Nginx 目录下新建文件夹 cert (文件夹与 nginx.conf 文件在同一目录)
如果找不到 Nginx 安装目录,可以使用以下命令确认(或全局搜索 nginx.conf 配置文件也可):创建好文件夹后把下载下来的pem和key文件丢进文件夹1
whereis nginx
- 配置 Nginx
打开上面提到的配置文件 nginx.conf,在 http{} 代码片段内添加以下配置:如果想设置 http 自动跳转 https,继续在 http{} 代码片段内添加以下配置:1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24#以下属性中,以ssl开头的属性表示与证书配置有关。
server {
listen 443 ssl;
#配置HTTPS的默认访问端口为443。
#如果未在此处配置HTTPS的默认访问端口,可能会造成Nginx无法启动。
#如果您使用Nginx 1.15.0及以上版本,请使用listen 443 ssl代替listen 443和ssl on。
server_name yourdomain;
# yourdomain 替换为自己的域名(与申请的证书一致)
root html;
index index.html index.htm;
ssl_certificate cert/cert-file-name.pem;
# cert-file-name.pem 替换为刚才添加的 pem 文件
ssl_certificate_key cert/cert-file-name.key;
# cert-file-name.key 替换为刚才添加的 key 文件
ssl_session_timeout 5m;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
#表示使用的加密套件的类型。
ssl_protocols TLSv1.1 TLSv1.2 TLSv1.3; #表示使用的TLS协议的类型,您需要自行评估是否配置TLSv1.1协议。
ssl_prefer_server_ciphers on;
location / {
root html; #Web网站程序存放目录。
index index.html index.htm;
}
}1
2
3
4
5
6
7
8
9server {
listen 80;
server_name yourdomain;
#需要将yourdomain替换成证书绑定的域名。
rewrite ^(.*)$ https://$host$1; #将所有HTTP请求通过rewrite指令重定向到HTTPS。
location / {
index index.html index.htm;
}
} - 迁移网站文件(具体网站文件该放在哪里请根据自己的安装情况判断)
- http: /var/www/html
- https: /usr/share/nginx/html
- 重启 Nginx
1
nginx -s reload
完结散花~
Nginx配置及SSL证书部署
https://baifabaiquan.cn/2023/02/15/Nginx配置及SSL部署/