解决NGINX报错 connection_upgrade 未知变量

0、前言

最近忙着给服务器搬家,好不容易搬好了又不小心删了内核,全部重来。在使用宝塔一键迁移 API版本时,我发现迁移到新服务器,每个网站在创建的时候都会报错:

Text
1
nginx: [emerg] unknown "connection_upgrade" variable

报错

于是查找资料解决问题,在此记录一下。

2、解决方法

在NGINX的主配置文件中,加入:

Nginx
1
2
3
4
5
6
7
8
http {
    ...
    #以上省略默认配置,在最后加入以下代码即可
    map $http_upgrade $connection_upgrade {
        default upgrade;
        ''      close;
    }
}

作用就是映射connection_upgrade变量为http_upgrade变量。

3、出错原因

宝塔不知道在哪个版本,自作聪明给所有的反向代理都加了:

Nginx
1
2
3
4
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $connection_upgrade;
proxy_http_version 1.1;
# proxy_hide_header Upgrade;

以支持反代WebSocket连接,可能是防止小白跑到论坛去提问

最后,建议所有的程序(NGINX,Apache,MySQL,PHP)全部都编译安装,最近听说宝塔编译安装会导致服务器被挂 马,甚至被入侵。

解决NGINX报错 connection_upgrade 未知变量

https://blog.tsinbei.com/archives/1021/

文章作者
Hsukqi Lee
发布于

2022-12-08

修改于

2022-12-15

许可协议

CC BY-NC-ND 4.0

评论

昵称
邮箱
网址
1 条

Framy

Framy

宝塔真是越做越差

  回复