背景

由于服务器对外只有一个端口,需要用nginx把服务器上多个tomcat的地址代理出来,工程中需要用Websocket,按照网上常规配置后,部分Websocket访问报403错误,部分Websocket正常。

nginx版本

1.14.2

配置

最开始的配置如下

            proxy_http_version 1.1;
            proxy_set_header Upgrade $http_upgrade;
            proxy_set_header Connection "upgrade";

配置后,部分Websocket访问报403错误,部分Websocket正常。经过google后,参考websocket problem when deployed behind nginx,后新增如下配置,重启nginx就好了。

proxy_set_header Origin '';

完整的配置如下

 location /api/stream {
        proxy_pass http://127.0.0.1:8000;

        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";

        proxy_set_header Origin '';
    }