Nginx 配置SSL证书
安装证书的前提
1. SSL证书
如果你使用的是各大云服务器厂商,可以在SSL证书菜单栏找到证书并下载。
或者去网上查找免费的SSL证书,免费证书一般有效期比较短,基本在90天左右。也有一些有效期长的免费证书,需要自行去查找。
还有就是各大云服务器厂商的控制台一般都可以获取免费的SSL证书,可以看看。
2. 上传文件到服务器的工具
云服务器一般都有终端平台,可以登录到服务器的终端平台,使用终端工具上传文件。
也可以使用第三方工具,如XFTP、WinSCP等。我使用的是XFTP,需要安装XFTP教程以及使用XFTP远程连接服务器教程可以看这个:Xftp 安装教程(详细步骤)
首先下载 SSL 证书。下载完成后,里面会有包含后缀为 *.crt、*.pem、*.key 这三个文件。其中:
*.crt 和 *.pem 是证书文件。我们只需要其中一个就够了。*.key 是私钥文件。这是必须的文件*.key 文件是必须上传的,*.crt 和 *.pem 选择其中一个上传就可以了,我这里选择的是 *.crt 文件。
将 *.key 和 *.crt 文件上传到服务器的 /etc/nginx 目录下。Nginx 默认的配置文件也在这个目录下:/etc/nginx/nginx.conf。
编辑 Nginx 默认配置文件。
vim /etc/nginx/nginx.conf
# 或者你使用的是额外配置文件
vim /etc/nginx/conf.d/your_domain.conf
将下面的配置内容粘贴到配置文件中,其中 server_name、ssl_certificate、ssl_certificate_key,这三个配置是需要修改的。proxy_pass 配置根据你的应用程序自行修改
# 配置 HTTPS 服务器
server {
listen 443 ssl;
server_name your_domain.com www.your_domain.com;
# 配置 SSL 证书
ssl_certificate /etc/nginx/your_domain.crt;
ssl_certificate_key /etc/nginx/your_domain.key;
# 其他 HTTPS 配置...
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384;
ssl_prefer_server_ciphers on;
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 1h;
location / {
# 这里将443端口代理到3000端口,因为我的应用程序在3000上
proxy_pass http://localhost:3000;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_connect_timeout 30s;
proxy_send_timeout 30s;
proxy_read_timeout 30s;
}
}
其中:
ssl_certificate 配置项指定了证书文件的路径。ssl_certificate_key 配置项指定了私钥文件的路径。ssl_protocols 配置项指定了服务器在与客户端建立 SSL/TLS 连接时,允许使用哪些 SSL/TLS 协议版本。ssl_ciphers 配置项指定了支持的加密套件。ssl_prefer_server_ciphers 配置项指定了在 SSL/TLS 握手时,是使用客户端的密码套件偏好顺序,还是使用服务器的。ssl_session_cache 配置项指定了 SSL/TLS 会话缓存,用于存储会话参数,以支持“会话恢复”,从而提升性能。ssl_session_timeout 配置项指定了 SSL/TLS 会话缓存的有效时间。即一个会话 ID 在缓存中存储多久之后会被清除。将下面的配置粘贴到配置文件中
# 配置 HTTP 服务器
server {
listen 80;
server_name your_domain.com www.your_domain.com;
# 重定向到 HTTPS
return 301 https://$host$request_uri;
}
配置完成之后 按下 Esc 退出编辑,输入 :wq 保存并退出。
重启 Nginx 服务器。
systemctl reload nginx