部署新环境Websocket不能建立成功

1.背景:在原来已经写好的项目,需要重新部署一套新的环境,这里主要是nginx , 和项目代码。

2.问题:在代码没有改动的前提下,页面上建立websocket 总是建立不成功,不成功的主要原因是报了603(603是我们后台自定义的错误编码,是请求后缀不正确的错误,这个其实不重要)

3.排查原因:在后台搜索603的错误code,发现是在一个Handler 中处理而设置的code,这个Handler主要是处理请求是否合法以及登录token的验证逻辑。但是现在在建立websocket的时候,却进入了这里呢?

4.问题分析:在本地跟踪调试代码,发现如果是websocket建立的时候,发起的请求,正常 的是不会走到这个preHandler 里面的,但是部署的新环境却进到了这个方法中,所以我做了一个猜想:就是浏览器发起websocket的时候,进入到后台却是一个普通的Http请求,这里突然就想到websocket所用的协议和Http的协议是不同的,当我再看websocket建立链接的请求的时候,发现请求头中有nginx , 然后我就开始怀疑nginx 默认是否支持websocket 。

5.解决办法:查找了一圈之后,就发现如果nginx支持websocket协议的话,是需要在nginx 的配置中的server内配置

         // 启用支持websocket连接
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";

配置上这一段的,然后就找运维配置上了之后,发现,真的成功了,也是一个从来没有遇到过的问题,特此记录之!!!

原文地址:https://blog.51cto.com/longithome/2486543

时间: 2024-10-17 05:27:56

部署新环境Websocket不能建立成功的相关文章

LFS(2)建立新用户和新环境

本来想使用我的日常工作用户mirage,但是看到LFS-Book里建立了新账户还进行了各种设置,我也就建立了新账户,防止不小心搞破坏. 建立新的group名为lfs,建立新用户lfs, groupadd lfs useradd -s /bin/bash -g lfs -m -k /dev/null lfs -s 是指定默认的shell,不指定也行,反正默认都是bash -g 是指定新用户将加入lfs组 -m 这个选项指明为新用户建立家目录,(这个选项不可省略,会报错) -k 这个选项是指定从/d

部署ruby环境遇到的坑

前言: 一年多前业务使用到redis-cluster集群,然而当时部署时,redis-cluster集群采用的是ruby 语言开发的脚本redis-trib.rb 来进行管理集群的.所以当时给服务器安装了ruby环境.最近项目再一次使用到了redis-cluster集群,所以没多想,直接照着当时的文档记录直接开干,居然行不通了,遇到了各种报错,此次记录在此方便后续使用查看. 服务器环境:centos7.6x84_64位,最小化安装直接部署ruby环境: yum -y install ruby r

应用部署新主机的常用设置

部署新系统的准备工作 假定需要在一台新主机部署Java应用,准备工作如下: 一.安装完Java,配置环境变量步骤如下: 右键我的电脑,选取属性,点击高级系统设置,弹出系统属性弹窗,点击环境变量: 在系统变量中选择新建 输入变量名:JAVA_HOME,变量值:C:\Program Files\Java\jdk1.8.0_201(选择你自己安装的Java路径): 在系统变量中找到PATH并选中编辑,若是win10系统,直接在弹窗里新建,并输入%JAVA_HOME%\bin; 若是win7,需在编辑内

腾讯云批量部署服务器环境的方法

批量部署需要用到腾讯云自带的自定义镜像功能,大致方法:先将部署好环境的云服务器制作自定义镜像,再通过自定义镜像购买新的云服务器,以达到批量部署的目的.重装系统时,也可以选择使用自定义镜像来重装. 一.在qcloud控制台,云服务器管理页面中,勾选服务器,点击更多操作,将服务器关机后选择制作镜像,将已经部署好环境的其中一台服务器制作镜像. 输入镜像名称,以及描述信息,点击确定按钮,服务器就会关机制作镜像了. 已经制作好的镜像如下: 二.镜像制作好之后,其他的多台服务器在重装系统或者新购多台服务器时

部署zabbix环境的搭建

部署zabbix环境的搭建 配置LAMP环境(因为之前已经搭建过了lnmp所以这里就不一一演示了) 也可以yum源安装: [[email protected] ~]#yum install make mysql-server httpd php mysql-devel gcc net-snmp-devel curl-devel perl-DBI php-gd php-mysql php-bcmath php-mbstring php-xml unixODBC-devel OpenIPMI-dev

D3.js部署node环境开发

总结一段D3.js部署node环境的安装过程 准备阶段: 首先电脑上要安装node环境,这个阶段过滤掉,如果node环境都不会装,那就别玩基于node环境搞的其他东西了. 搭建环境: 我在自己的F:系统盘创建一个工程目录d3Node,然后创建一个package.json文件,里面配置如图: 其中:dependencies字段描述了你的工程所用到的库运行时的依赖,他们可以使你的工程在浏览器中正常运行.在d3中只有一个依赖,d3是D3在npm库中发布的名字,其中版本号3.x标明该工程可以兼容任意大于

TomCat下部署接口测试环境

Tomcat目录结构说明 bin Linux或windows平台上可执行脚本文件,如果启动和关闭Tomcat的脚本 conf Tomcat服务器的各种全局配置文件,其中包括:server.xml:Tomcat的主要配置文件,服务器配置信息,如端口号.虚拟机等 tomcat-user.xml:Tomcat用户的文件,保存tomcat的用户名.密码.角色信息 web.xml:部署描述文件,注册了很多MIME类型,即文档类型 lib 所有jar文件 logs 执行时的日志文件比如启动报错,会保存在该目

[部署开发环境]部署django的生成环境nginx+uwsgi+django

#教程 # ubuntu部署django项目 # 部署准备 - ubuntu操作系统 -- vagrant虚拟 - Nginx服务器 -- 安装在ubuntu的web服务器 - uWSGI应用协议服务模块 -- python的uwsgi模块 - python虚拟环境 -- virtualenv - django框架 - nginx 配置(http <--> socket) - uwsgi配置(socket<-->wsgi) - 系统配 详情见图片linux部署django项目图.p

python-pycharm中使用anaconda部署python环境

pycharm中使用anaconda部署python环境 今天来说一下python中一个管理包很好用的工具anaconda,可以轻松实现python中各种包的管理.相信大家都会有这种体验,在pycharm也是有包自动搜索和下载的功能,这个我在前面的一篇博客中有相关的介绍(详情请查看点击打开链接),但是这种功能对于一些包是可以使用的,但是总是会遇到有些包下载失败或查询不到的时候,这个时候就会让人很苦恼了.这里我们就来说一下anaconda的好处. 下面是我从别的地方贴来的说辞: Anaconda的