作者 青鸟
前段时间将博客从GitPage托管迁移到了阿里云服务器上,在部署博客的SSL证书时候,由于阿里云的Nginx文档所对应的Nginx版本太老了,在百度的时候查找了好几篇文章但是都是雷同并且版本过老,已经不适用于现在的版本了,这就导致了部署的磕磕绊绊。现在写一篇来记录一下在最新的版本下的部署方法。
注意:本篇所针对的是版本为:
- nginx版本:1.18.0 (Ubuntu)
- 系统:Ubuntu22.04.1
HTTPS部署
首先要做到的是将SSL证书下载到本地,在相应的云服务控制台中下载相应的对应nginx版本的SSL证书,其中应该包括了两个文件,一个是.pem
另一个是.key
,这两个文件分别为证书文件和私钥文件。
通过远程连接软件将这两个文件上传到nginx的目录下,默认的位置为/etc/nginx
,如果不知道默认的安装路径,可以使用命令nginx -t
这里推荐使用的上传工具为xftp,现在是免费使用的。
在大部分的博客里这里都选择编辑 Nginx 根目录下的 nginx.conf 文件。
但是这也就造成了一个问题,当我们有多个证书需要部署在不同的端口的时候,都写在nginx.conf里面就会显得很拥挤,对后续的管理造成了极大的困难,这就类似于在c++的main函数中写下了所有的逻辑
在新版的nginx中。允许了在nginx.conf中导入其他文件夹中的.conf配置文件,我们针对不同的端口服务,建立不同的conf配置文件,这样极大的方便了nginx配置文件的管理。观察nginx.conf,发现nginx已经为我们建好了一个文件夹,并且导入到了配置文件中
在nginx文件目录下的conf.d
文件夹中新建一个配置文件。
同时如果您需要将 HTTP 请求自动重定向到 HTTPS。您可以通过以下操作设置: 根据实际需求,选择以下配置方式:
- 在页面中添加 JS 脚本。
- 在后端程序中添加重定向。
- 通过 Web 服务器实现跳转。
- Nginx 支持 rewrite 功能。若您在编译时没有去掉 pcre,您可在 HTTP 的 server 中增加 return 301 https://$host$request_uri;,即可将默认80端口的请求重定向为 HTTPS。
我们在这个新建的配置文件下添加如下的内容
|
|
这里要注意一点,80端口是http的端口,在nginx.conf中可能已经配置了,这里注意删除掉相关的配置。
通过执行以下命令验证配置文件问题
|
|
通过执行以下命令重载 Nginx。
|
|
重载成功,即可使用 https://example.com 进行访问。
说明
未添加注释的配置语句,您按照下述配置即可:
由于版本问题,配置文件可能存在不同的写法。例如:Nginx 版本为 nginx/1.15.0 以上请使用 listen 443 ssl 代替 listen 443 和 ssl on
参考文章: