我好几次给这个网站续期ssl证书时都会发生莫名其妙的问题,我大概知道是我的nginx配置的不正确所导致的,可是我本人并不懂nginx,所以每次都要花费好多时间研究怎么更新ssl。
然后好不容易研究出来搞对了,结果三个月后到续期时间就又忘了,真是好记性啊。所以还是记录下怎么解决问题吧。
首先如上图,点了续期后大概率会出现一次nginx的报错,内容如下:
证书错误:
nginx version: nginx/1.24.0
nginx: [emerg] unknown "upgrade" variable
nginx: configuration file /xxxx/nginx/conf/nginx.conf test failed
为什么会出现这样的错误,我也不知道,但是有解决的方法。
该错误是因为配置文件中引用了不被支持或不正确的变量,也就是那个
这个路径以及文件。upgrade
`,虽然我不知道这个变量是哪里冒出来的,但只需要到它下面给出的路径下修改以下即可。也就是
`/xxxx/nginx/conf/nginx.conf
这个文件内有如下内容:
http
{
include mime.types;
#include luawaf.conf;
include proxy.conf;
lua_package_path "/www/server/nginx/lib/lua/?.lua;;";
...
在这个文件的http内添加如下代码:
map $http_upgrade $upgrade {
default upgrade;
'' close;
}
合并后是这样的:
http
{
map $http_upgrade $upgrade {
default upgrade;
'' close;
}
include mime.types;
#include luawaf.conf;
include proxy.conf;
lua_package_path "/www/server/nginx/lib/lua/?.lua;;";
...
这样就解决问题了。
至于这是什么原理呢,其实我也不是很清楚,大概是nginx缺少一个
之上。upgrade
`变量,所以我们用
`map
`函数定义一个映射关系,大概是定义了一个变量
`upgrade
`映射到
`http_upgrade
第二行定义了默认映射规则,第三行定义了当
为空的情况。大致就是这样吧,详情可以看这篇csdn文章。http_upgrade
基本就是这样了,我们有缘再见。