为 Nginx 服务器配置 HTTPS 证书

使用 HTTPS 协议进行网络通讯已经成为了现代网站,API接口的标配。本文演示如何为 Nginx 服务器配置 HTTPS。

获取证书

很多云服务器服务商都提供了免费的CA证书,具体可以参考云服务商的帮助文档。这里以腾讯云中申请的证书为例进行演示。

在腾讯云申请的证书下载后有很多文件,其中有两个就是针对 nginx 的配置文件, 分别是:

  1. 1_<你的域名>_bundle.crt
  2. 2_<你的域名>.key

如果你的域名是:example.com, 则文件为:

  1. 1_example.com_bundle.crt
  2. 2_example.com.key

配置 Nginx

  1. 将两个文件上传到安装 Nginx 的主机上,并复制到 /etc/nginx/conf.d 目录中

  2. 编辑配置文件,在 server 中增加 ssl 配置

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
server {
# listen 80 default_server;
# listen [::]:80 default_server;

# ... 其它配置项

listen 443 ssl;

server_name <你的域名>;

ssl_certificate conf.d/1_<你的域名>_bundle.crt;

ssl_certificate_key conf.d/2_<你的域名>.key;

ssl_session_timeout 5m;

ssl_protocols TLSv1 TLSv1.1 TLSv1.2;

ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;

ssl_prefer_server_ciphers on;

# ... 其它配置项
}

注意用真实域名替换 ‘<你的域名>’

  1. 编辑完成后,可以使用以下命令验证配置项是否正确
1
sudo nginx -t

如果没问题,则可以重启

1
sudo systemctl restart nginx

强制访问 HTTPS

修改 /etc/nginx/sites-available/default 文件,加入一下内容

1
2
3
4
5
6
7
server {
listen 80;

server_name: <你的域名>;

return 301 https://$host$request_uri;
}

如果你的域名为: example.com, 则文件为:

1
2
3
4
5
6
7
server {
listen 80;

server_name: example.com;

return 301 https://$host$request_uri;
}

保存后重启。

本文标题:为 Nginx 服务器配置 HTTPS 证书

文章作者:Morning Star

发布时间:2021年12月12日 - 22:12

最后更新:2022年01月03日 - 11:01

原始链接:https://www.mls-tech.info/web/nginx-config-https-cert/

许可协议: 署名-非商业性使用-禁止演绎 4.0 国际 转载请保留原文链接及作者。