Nginx 服务器配置 SSL 证书
前提条件
- 域名完成DNS解析
- 服务器开放443端口
购买证书
登陆阿里云,访问 SSL 证书管理页面。
SSL 证书管理 => 个人测试证书 => 立即购买
免费证书每年可以领取20个。
创建证书 => 填写域名 => 证书申请 => 填写信息
域名验证方式:如果你的域名在当前的阿里云账号下,那么可以选择自动DNS验证,如果域名不在当前账号下,选择手工DNS验证,当然也可以选择文件验证,根据实际情况选择
审核通过后,会下发证书。
配置证书
下载证书
配置证书
创建存放证书的路径
cd /etc/nginx # 根据实际配置调整
mkdir cert
上传证书文件和私钥文件至 /etc/nginx/cert
编辑 Nginx 配置文件 /etx/nginx/nginx.conf
# 二级域名
server {
listen 443 ssl default_server;
ssl on;
# listen 80 default_server;
# listen [::]:80 default_server;
server_name domain.name;
root /home/domain;
#填写证书文件绝对路径
ssl_certificate cert/domain.name.pem;
#填写证书私钥文件绝对路径
ssl_certificate_key cert/domain.name.key;
}
# 三级域名
server {
listen 443 ssl;
ssl on;
# listen 80;
# listen [::]:80;
server_name aaa.domain.name;
root /home/aaa;
#填写证书文件绝对路径
ssl_certificate cert/aaa.domain.name.pem;
#填写证书私钥文件绝对路径
ssl_certificate_key cert/aaa.domain.name.key;
}
配置对443端口的监听后,要将对80端口的监听注释
配置 http 自动跳转 https
# 二级域名
server {
listen 80;
server_name domain.name ;
# 将请求转成 https
rewrite ^(.*) https://$server_name$1 permanent;
}
# 三级域名
server {
listen 80;
server_name aaa.domain.name;
# 将请求转成 https
rewrite ^(.*) https://$server_name$1 permanent;
}
重启 Nginx
nginx -s reload
一些问题
ssl 指令过时
🐛 报错:
nginx: [warn] the "ssl" directive is deprecated, use the "listen ... ssl" directive instead in /etc/nginx/nginx.conf
✅ 解决:
server {
listen 443 ssl; # 将 ssl 参数直接放在 listen 指令中
ssl_certificate /path/to/certificate.crt;
ssl_certificate_key /path/to/private.key;
...
}
Nginx 服务器配置 SSL 证书
http://guoguo.host/blog/p/90d8d84.html