本文记录了 Nginx 服务器安装 SSL 证书,以及重定向 HTTP 请求为 HTTPS 的详细配置过程。
前言
域名有了,也通过备案了,SSL 的证书也申请到了,现在开始来安装一下 SSL 证书。
文中使用的域名为 dancying.cn
,证书为腾讯云的免费 SSL 证书。
Nginx 的版本为 nginx/1.25.4。
文中使用的是腾讯云 Linux 服务器,系统镜像为 CentOS 7.6 的版本。
文中使用的命令均为 root
用户执行。
安装步骤
此部分正式开始安装 SSL 证书(其中 HTTP 重定向为 HTTPS 是顺带的)。
上传证书
从 Windows 上传证书文件到 Linux 服务器有好几种方法,例如
- 使用 FTP 软件
- 使用
rz
命令 - 腾讯云服务器可以使用
OrcaTerm
上传文件 - 使用
vi
命令创建文件
此处选择使用 Linux 的 vi
命令创建证书文件,其他方式自行探索。
注意 : Nginx 需要的证书文件中必须包含
.crt
文件和.key
文件
上传 .crt
文件
- 首先,进入 Linux 中的 Nginx 配置文件目录
/etc/nginx
cd /etc/nginx/
- 使用
vi
命令创建dancying.cn_bundle.crt
文件vi dancying.cn_bundle.crt
- 在 Windows 上使用文本编辑器打开
.crt
文件,并将内容复制粘贴至 Linux 中,保存后退出
上传 .key
文件
- 首先,进入 Linux 中的 Nginx 配置文件目录
/etc/nginx
cd /etc/nginx/
- 使用
vi
命令创建dancying.cn.key
文件vi dancying.cn.key
- 在 Windows 上使用文本编辑器打开
.key
文件,并将内容复制粘贴至 Linux 中,保存后退出
配置 Nginx
- 在 Linux 上使用
vi
命令创建并编辑文件ssl_certificate.conf
(文件名随意,以.conf
结尾即可)vi /etc/nginx/conf.d/ssl_certificate.conf
- 将以下内容略作修改,然后复制粘贴至
ssl_certificate.conf
文件中,保存后退出server { # SSL 访问的默认端口号 listen 443 ssl; # 绑定证书的域名地址 server_name dancying.cn; # CRT 证书的路径 ssl_certificate dancying.cn_bundle.crt; # KEY 文件的路径 ssl_certificate_key dancying.cn.key; ssl_session_timeout 5m; # 协议配置 ssl_protocols TLSv1.2 TLSv1.3; # 加密套件配置 ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE; ssl_prefer_server_ciphers on; # 网站主页路径 root /usr/share/nginx/html; location / { index index.php index.html index.htm; } location ~ .php$ { fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } } server { # HTTP 访问的默认端口 listen 80; # 绑定证书的域名 server_name dancying.cn; # 将 HTTP 请求重定向为 HTTPS return 301 https://$host$request_uri; }
- 查看
/etc/nginx/nginx.conf
文件,确认其中http
块的include /etc/nginx/conf.d/*.conf;
行未被注释cat /etc/nginx/nginx.conf
- 以下为查看结果,部分内容省略
...... http { ...... include /etc/nginx/conf.d/*.conf; client_max_body_size 8M; }
- 以下为查看结果,部分内容省略
- 使用
nginx -t
命令验证/etc/nginx/nginx.conf
文件的语法是否存在问题nginx -t
- 以下为命令执行的正常结果
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok nginx: configuration file /etc/nginx/nginx.conf test is successful
- 以下为命令执行的正常结果
- 最后重新载入 Nginx 服务即可
systemctl reload nginx
总结
我使用的是 WordPress 站点,所以需要同时在 WordPress 站点的 设置 -> 常规 中修改 WordPress地址(URL)
和 站点地址(URL)
的值为 https
的协议。