解决upstream prematurely closed connection while reading response header from upstream问题(nginx)

2023-05-16

问题描述:

使用docker部署了前端和nginx,前端有需求要使用websocket,所以在nginx中配置了websocket转发,配置如图:

server {
    listen       80;
    server_name  127.0.0.1;

    charset utf-8;
    
    # websocket转发
    location /websocket/ {
        proxy_pass http://websocket:3600;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade; 
        proxy_set_header Connection $connection_upgrade;
    }}
}

发现报错upstream prematurely closed connection while reading response header from upstream,然后去网上找答案,有的说是ngxin缓存目录权限问题,有的说是 keepalive_timeout 时间设置太短,试了以后,发现均不能解决问题。

问题原因:

经过仔细排查,发现目标服务并没有收到转发,websocket服务需要的是http://ip:port/Infer/?token='abc',结果真实路径是http://ip:port/websocket/Infer/?token=‘abc’,网上查了那么多答案,没有一个人提到转发不对也可能造成这个错误,可能还是我太菜了,做前端太难了...      既然原因知道了,那解决很简单,就是让路径满足要求就行,修改为如下配置后websocket连接成功。

server {
    listen       80;
    server_name  127.0.0.1;

    charset utf-8;
    
    # websocket转发
    location /websocket/ {
        proxy_pass http://websocket:3600/;  #重点就是端口后的这个斜杠
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade; 
        proxy_set_header Connection $connection_upgrade;
    }}
}

  知识延展:

上述问题,解决起来看似很简单,知识在proxy_pass路径后加 / ,那么这个斜杠到底该怎么用呢?规律如下:

原始请求:192.168.1.123:80/static/a.html
代理后ip: 192.168.2.321:81

# 情况1 location后没有/    转发网站没有/
实际转发后请求:192.168.2.321:81/static/a.html

# 情况2 location后有/     转发网站没有/
实际转发后请求:192.168.2.321:81/static/a.html


# 情况3 location后没有/    转发网站有/
实际转发后请求:192.168.2.321:81/a.html

192.168.1.123:80/static/a.html
# 情况4 location后有/      转发网站有/
实际转发后请求:192.168.2.321:81/a.html

#结论
proxy_pass后路径只要跟了斜杠,nginx转发时就会把location后对应的url部分去掉

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

解决upstream prematurely closed connection while reading response header from upstream问题(nginx) 的相关文章

  • 使用 OpenVPN 创建 VPN

    我在 Android 10 上连接 VPN 时遇到问题 并在 logcat 中收到以下消息 这是权限错误 寻找解决方案 还在 Mainfest 中添加了 android requestLegacyExternalStorage true 但
  • Oracle 协议适配器错误

    你好 我刚刚在我的笔记本电脑上安装了 Oracle 10 g Express Edition 平台是Windows XP SP3 安装正常 但是 当我尝试通过 SqlPlus 连接到 Oracle 数据库时 出现 TNS 协议适配器错误 我
  • javascript/dashcode:检查互联网连接

    我正在开发一个通过ajax从互联网获取数据的小部件 如果该小部件无法连接到服务器 我想提供一条错误消息 我正在使用 jquery 的 ajax 对象执行请求 该对象提供了错误回调函数 但是当没有互联网连接时 仅当发出请求但因其他原因失败时才
  • 无法打开数据库文件

    private void SetConnection string a string Format Data Source 0 Version 3 New False Compress True lodeDb db sql con new
  • 具有两个或多个参数的 ITransformableFilterValues 接口 [SharePoint WebParts]

    我使用 Sharepoint 并尝试使用多个参数连接 Web 部件 我的问题是如何将多个参数从自定义 Web 部件传递到另一个参数 我可以通过在自定义 webpart 中实现 ITransformableFilterValues 接口来传递
  • 在 ColdFusion 中维护出站 TCP 连接池

    我希望从 ColdFusion 应用程序中大量使用 RESTful API 我不是 CF 专家 但我预计重复的 cfhttp 调用将成为瓶颈 因为我相信每次调用都会导致建立连接 发送请求 收到响应和断开连接 我很好奇 有没有办法维护一个连接
  • 使用 Rails 连接到 Web 服务(HTTP 请求)?

    我正在使用 Ruby on Rails 3 并尝试实现 API 以从 Web 服务检索帐户信息 也就是说 我想连接到具有 Account 类的 Web 服务并从show在 URI 处路由的操作http
  • SQL Anywhere 11,JZ0C0:连接已关闭

    我开发基于 apache tomcat 6 0 26 apache cxf 2 2 7 spring 3 0 hibernate 3 3 和 sybase sqlanywhere 11 的 Web 服务 我使用 SYBASE jconn j
  • 无法将 Windows Phone 应用程序部署到模拟器。错误 DEP 6100 和 6200

    我创建新的默认项目 Window Phone 然后使用模拟器 Window Phone 运行它 但无论模拟器如何启动 它都不起作用 我使用 Window 8 1 64 位和 Visual Studio Professional 2013 U
  • SSL 套接字连接超时

    如何在 Java 中配置 SSL 套接字的连接超时 对于普通套接字 我可以简单地创建新的套接字实例 而无需使用任何目标端点new Socket 然后调用连接 SocketAddress端点 int超时 http download oracl
  • 是否有理由为连接池设置 maxIdle > maxActive ?

    我刚刚学习连接池 我想知道是否有任何理由设置maxIdle gt maxActive 这是我的理解 空闲连接是已创建并等待使用的连接 一旦客户端借用它 它就会成为活动连接 minIdle确定要在池中创建的初始连接数 当客户端尝试使用该池时
  • 通过控制台应用程序连接到 Oracle,不能通过 Web 服务连接

    我无法通过 asmx Web 服务连接到 Oracle 模式 而可以通过控制台应用程序 x86 连接到 Oracle 模式 代码 var conn new OracleConnection Data Source xe User ID my
  • C# - 从客户端检查 TCP/IP 套接字状态

    我想为我的 TCP IP 客户端类提供 CheckConnection 函数 以便我可以检查是否发生了错误 我自己的客户端断开连接 服务器断开连接 服务器卡住等 我有类似的东西 bool isConnectionActive false i
  • Elasticsearch:如何查询连接数?

    如何询问我的 Elasticsearch 服务器现在有多少个连接 这与插座数量相同吗 我也不知道如何获得这些数字 这与客户端的数量不同 对吧 因为每个客户端可能打开多个连接 找不到任何相关信息 但我确实发现您可以在 Elasticsearc
  • 我该怎么做才能完全关闭与mcu的tcpClient连接?

    我现在正在研究与 ESP32 中运行的 tcp 服务器的 tcp 套接字连接 通信工作正常 但我无法关闭连接 在搜索关闭 重置 tcpClient 上的解决方案后 似乎关闭 tcpClient 的正确方法应该是 tcpClient GetS
  • 使用 R 下载压缩数据文件、提取和导入数据

    EZGraphs 在 Twitter 上写道 很多在线 csv 都被压缩了 有没有办法下载 解压缩存档并使用 R 将数据加载到 data frame Rstats 我今天也尝试这样做 但最终只是手动下载 zip 文件 我尝试过类似的东西 f
  • hibernate sessionfactory如何管理session?

    我刚刚得到了Hibernate Session和Connection之间的关系 但现在 我又遇到了一个问题 hibernate sessionfactory如何管理session 在以下代码段中 DAO 类的 save 方法 Session
  • “已经有一个与此命令关联的打开的 DataReader,必须先将其关闭。”

    我正在开发需要连接到另一个数据库以获取一些数据的应用程序 为此 我决定使用 SqlConnection reader 等 我需要执行一些查询 例如首先我需要获取某个用户的卡 ID 之后我需要通过该卡 ID 获取一些数据 这是我的代码 reg
  • 立即检测客户端与服务器套接字的断开连接

    如何检测客户端已与服务器断开连接 我的代码中有以下代码AcceptCallBack method static Socket handler null public static void AcceptCallback IAsyncResu
  • 在Java中测试服务器是否启动的正确方法?

    简单地查看是否可以建立与网站 服务器的连接的正确方法是什么 我想要这个用于我正在编码的应用程序 如果我的网站离线 它只会提醒我 Thanks 您可以使用 HttpURLConnection 发送请求并检查响应正文中是否有该页面特有的文本 而

随机推荐

  • 使用 Java 实现快速排序(详解)

    一 概述 最近在看一些面试题 xff0c 发现很多面试过程中都会要求手写快速排序 xff0c 查阅一些博客发现别人写的并不是特别清楚而且也很难记住 xff0c 所以为了更好的掌握这个算法 xff0c 所以在这篇文章中 xff0c 将自己的学
  • CentOS7搭建Samba共享文件夹 设置无密码登录

    搭建之前 xff1a 关闭防火墙 CentOS7默认的防火墙不是iptables xff0c 而是firewalle 停止firewalld服务 systemctl stop firewalld 禁用firewalld服务 systemct
  • 查看 openstack 组件日志

    openstack 部署方式 kolla ansible 使用 kolla ansible 部署方式时 xff0c 所有组件的日志文件会外挂到宿主机上 xff08 都是使用容器启动的 xff09 xff0c 可以在相应节点的 var log
  • 15th 【最短路 dijkstra】最小花费

    最小花费 在n个人中 xff0c 某些人的银行账号之间可以互相转账 这些人之间转账的手续费各不相同 给定这些人之间转账时需要从转账金额里扣除百分之几的手续费 xff0c 请问A最少需要多少钱使得转账后B收到100元 输入文件 第一行输入两个
  • 使用VNC远程登录百度智能云服务器

    使用VNC服务远程登录对浏览器有一定的要求 xff0c 现在只支持如下版本的浏览器 xff0c 使用之前注意VNC页面的提示 浏览器名称版本Google Chrome16 43 Firefox3 6 43 iOS Safari6 1 43
  • Linux环境下为普通用户添加sudo权限

    系统环境 xff1a Centos6 5 1 背景 xff1a sudo是Linux系统管理指令 xff0c 是允许系统管理员让普通用户执行一些或者全部root命令的一个工具 Linux系统下 xff0c 为了安全 xff0c 一般来说我们
  • 利用jquery实现当前时间动态显示

    html代码 xff1a lt div id 61 34 time 34 gt lt div gt jQuery代码 lt script type 61 34 text javascript 34 gt setInterval functi
  • Turtlebot3 Gazebo仿真环境下深度强化学习DQN开发环境构建

    1 Anaconda2 安装 2 Tensorflow安装 ubuntu18系统anaconda安装tensorflow qq 39429669的博客 CSDN博客 3 下载并编译源码 本文先使用github中开源的机器学习的源码进行学习
  • Python数据挖掘 - 第一部分

    文章目录 第一章 数据挖掘库的安装第二章 Matplotlib2 1 matplotlib简介2 2 折线图 xff08 plot xff09 与基础绘图功能2 3 散点图 xff08 scatter xff09 2 4 柱状图 xff08
  • TortoiseGit解决冲突

    TortoiseGit解决冲突 问题概述场景重现解决冲突 问题概述 在项目实施过程中 xff0c 多人维护同一份文件或代码时经常会在本地Commit完再从远程仓库Pull时出现冲突 这时需要保留自己的内容 xff0c 同时也保留远程仓库原来
  • axios的简单封装

    前言 在每次使用原装的axios发送 http请求时 如果需要token验证 xff0c 则都需要创建拦截器 xff0c 添加 39 token 39 请求头 xff0c 或者在config中具体的请求体中添加 xff0c 是一个非常麻烦的
  • 【操作系统】RT-Thread 入门学习

    一 嵌入式操作系统 1 1 软实时与硬实时 强实时操作系统 xff1a 严格限定在规定时间内完成任务 xff0c 否则就会导致灾难性的发生 xff0c 例如导弹拦截系统 汽车引擎系统等 弱实时操作系统 xff1a 可以允许偶尔出现一定的时间
  • windows10安装NVIDIA显卡驱动+cuda10.0教程

    windows10安装NVIDIA显卡驱动 43 cuda10 0教程 1 安装个鲁大师2 确定本机是否支持GPU加速3 更换至匹配的显卡驱动4 下载和安装cuda和cudnn5 验证6 游戏加速7 分享个漂亮的壁纸 1 安装个鲁大师 查看
  • 生成小批量数据集

    shell脚本随机筛选一个目录下后缀为2 4 6 8的 mp4文件 span class token function find span mnt sdb dataset 20181217 RX5 zheA5MV46 name mp4 sp
  • mapreduce二次排序案例

    为什么需要二次排序 在MapReduce操作时 xff0c 我们知道传递的 lt key value gt 会按照key的大小进行排序 xff0c 最后输出的结果是按照key排过序的 有的时候我们在key排序的基础上 xff0c 对valu
  • 浏览器缓存致使修改的样式不生效,解决方式

    我们使用缓存的资源越多 xff0c 网站的响应能力和性能就会越好 为了优化缓存 xff0c 过期时间设置得尽量长是一种很好的策略 对于定期或者频繁更新的资源 xff0c 这么做是比较稳妥的 xff0c 但是对于那些长期不更新的资源会有点问题
  • 数据清洗的步骤

    1 数据清洗的基本过程 S1 xff1a 数据分析 在数据清洗之前 xff0c 对数据分析 xff0c 对数据质量问题有更为详细的了解 xff0c 从而选择更好的清洗方案 S2 xff1a 定义清洗规则 通过数据分析 xff0c 掌握了数据
  • html前端之css绘制形状

    纯CSS绘制的图形 xff0c 有最简单的矩形 圆形和三角形 xff0c 也有各种常见的多边形 xff0c 甚至是阴阳太极和网站小图标 xff0c 非常强大 Square 正方形 square width 100px height 100p
  • 解决docker 运行standard_init_linux.go:219: exec user process caused: exec format error报错

    使用mac M1 build image 在linux上运行会报standard init linux go 219 exec user process caused exec format error 这个问题出现的主要原因是golang
  • 解决upstream prematurely closed connection while reading response header from upstream问题(nginx)

    问题描述 xff1a 使用docker部署了前端和nginx 前端有需求要使用websocket 所以在nginx中配置了websocket转发 xff0c 配置如图 xff1a server listen 80 server name 1