Nginx反向代理配置支持websocket

news2024/11/20 5:35:16

一、官方文档

WebSocket proxying

       为了将客户端和服务器之间的连接从HTTP/1.1转换为WebSocket,使用了HTTP/1.1中可用的协议切换机制(RFC 2616: Hypertext Transfer Protocol – HTTP/1.1)。

       然而,这里有一个微妙之处:由于“升级”是逐跳报头(hop-by-hop),因此它不会从客户端传递到代理服务器。使用正向代理,客户端可以使用CONNECT方法来规避此问题。但是,这不适用于反向代理,因为客户端不知道任何代理服务器,并且需要在代理服务器上进行特殊处理。

       从1.3.13版本开始,nginx实现了特殊的操作模式,允许在客户端和代理服务器之间建立一个隧道,如果代理服务器返回一个带有代码101(切换协议)的响应,并且客户端通过请求中的“升级”头请求协议切换。

代理服务器nginx进行协议升级

二、基础配置 (只能处理websocket协议)

如上所述,包括“升级”和“连接”在内的逐跳报头不会从客户端传递到代理服务器,因此为了让代理服务器知道客户端将协议切换到WebSocket的意图,这些报头必须显式传递:

location /chat/ {
    proxy_pass http://backend;
    proxy_http_version 1.1;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection "upgrade";
}

简单来说:是如果想要nginx支持websocket 需要配置

proxy_http_version 1.1;

proxy_set_header Upgrade $http_upgrade;

proxy_set_header Connection "upgrade";

三、复杂配置 (可以同时处理websocket和http协议)

http {
    map $http_upgrade $connection_upgrade {
        default upgrade;
        ''      close;
    }

    server {
        ...

        location /chat/ {
            proxy_pass http://backend;
            proxy_http_version 1.1;
            proxy_set_header Upgrade $http_upgrade;
            proxy_set_header Connection $connection_upgrade;
        }
    }

map语法解释:

当Upgrade是 ‘’ 的时候,设置Connection 为close,其他默认设置成upgrade,这样配置后,nginx就可以同时处理websockt和http请求了。

总结

通过Http升级机制将Http升级为WebSocket。Nginx代理服务器通过修改配置的方式解决了WebSocket属于hop-by-hop协议的问题、并通过保持分别与客户端和服务端的连接一直处于打开状态从而实现WebSokcet的代理。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2177062.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

TLS详解

什么是TLS TLS(Transport Layer Security)传输层安全性协议 ,它的前身是SSL(Secure Sockets Layer)安全套接层,是一个被应用程序用来在网络中安全的通讯协议, 防止电子邮件、网页、消息以及其他协议被篡改或是窃听。是用来替代SSL的&#xf…

ONFI 5.1:定义、缩写语和约定

address 该地址由一个行地址和一个列地址组成。行地址标识要访问的page、block和LUN。列地址标识要访问的page中的byte或word。 asynchronous 异步是指数据用WE_n信号进行写,RE_n信号进行读。 block 由多个page组成,是擦除操作的最小可寻址单元。 column…

稀土阻燃协效剂-磷氮系的应用

稀土阻燃协效剂凭借独特的稀土4f电子层结构,在聚合物材料燃烧时可催化酯化成炭,迅速在高分子表面形成致密连续的碳层,隔绝聚合物材料内部的可燃性气体与氧气的接触,从而达到阻燃抑烟的效果,且燃烧时不产生有毒有害气体。 金士镧系列稀土阻燃剂是一种基于稀土协效阻燃的复合阻燃…

Windows11如何关闭“显示更多选项”,直接展示所有选项

在windows11系统中,右击,会有“显示更多选项”,每次都要点一下这个按钮,才能看到所有的选项,太麻烦,那么有什么办法去掉呢? 1、以管理员的方式打开命令提示符 winR;cmd回车 执行命…

在Ubuntu和centos系统安装JDK教程

目录 1. 先使用apt 查看有哪些软件包2.使用apt安装软件包3.确认是否安装4.centos安装jdk Linux会把一些软件包,放到对应的服务器上,通过包管理器这样的程序,来把这些软件包下载安装 包管理器: Ubuntu:apt centos&#…

工程设备包括哪些内容?

工程设备是构成或计划构成永久工程一部分的机电设备、金属结构设备,仪器装置及其他类似的设备和装置。它们在工程建设中扮演着至关重要的角色,涵盖了从基础建设到设备安装的多个方面。以下是整理出来的一些工程设备主要的内容: 1. 建筑机械设…

实用好软-----电脑端 从视频中导出音频的方便工具

最近想从一个视频中导出个音乐,百度找很多没有合适的工具。最终找到了一款很方便 而且操作超级简单的工具。打开这个工具后只需要把需要导出音乐的视频拖进窗口里就会自动导出音乐mp3。方便小巧,而且音频效果还是不错的。 一些视频转换成音频文件&#x…

从零开始学习OMNeT++系列第一弹——OMNeT++的介绍与安装

最近由于由于工作上的需求,接了一个网络仿真的任务。于是开始调研各个仿真平台,然后根据目前的需求和网络上公开资料的多少,决定使用omnet这个网络仿真平台。现在也是刚开始学习,所以决定记录一下从零开始的这个学习过程。因为虽然…

社交应用性能提升秘籍:推拉结合优化方案全解读!

我是小米,一个喜欢分享技术的29岁程序员。如果你喜欢我的文章,欢迎关注我的微信公众号“软件求生”,获取更多技术干货! Hello,大家好!我是你们的老朋友小米,一个积极活泼的29岁技术分享达人~ 今天要跟大家分享的是我最近在个人项目里遇到的一个有趣的优化案例——“推拉…

OptiTrack与Xsens光、惯动捕中用于动画制作的尖端设备对比

随着动画、电影、游戏等数字内容行业的迅速发展,捕捉演员的动作并将其转化为虚拟角色的技术越来越受到重视。两种主要的动作捕捉技术——光学捕捉系统和惯性动作捕捉系统——代表了当前市场的最前沿。本文将对比两种技术的代表性设备:OptiTrack的光学动作…

Vue3 动态加载图片不显示问题

一、图片目录结构 二、批量导出图片 exportImage.ts const images import.meta.glob(/assets/icons/*.{png,jpg,jpeg,svg}, { eager: true });const imageMap Object.entries(images).reduce((acc, [key, value]) > {const imageName key.split(/).pop().replace(/\.…

PDF对话RAG应用开发实战

与大型 PDF 对话很酷。你可以与笔记、书籍和文档等聊天。这篇博文将帮助你构建一个基于 Multi RAG Streamlit 的 Web 应用程序,以通过对话式 AI 聊天机器人读取、处理和与 PDF 数据交互。以下是此应用程序工作原理的分步分解,使用简单的语言易于理解。 N…

运用电磁铁需求注意哪些问题

电磁铁是比较常用的磁场设备,在与磁性研究相关的实验室里,我们能经常看到,那磁场设备在使用的时候,包括各类电磁铁、亥姆霍兹线圈、螺线管等,有什么需要注意的事项呢? 电磁铁设备主要包括电磁铁以及配套电…

大跳水!华为三折叠手机黄牛价暴跌,市场需求显真相

华为首款三折叠手机Mate XT上市初期受到黄牛热炒,但由于实际需求不足和定价过高,市场溢价迅速下跌,反映出折叠屏手机市场仍需培养消费者接受度。 转载:科技新知 原创 作者丨依蔓 编辑丨蕨影 惊了!华为首款三折叠手机M…

Electron 主进程与渲染进程、预加载preload.js

在 Electron 中,主要控制两类进程: 主进程 、 渲染进程 。 Electron 应⽤的结构如下图: 如果需要更深入的了解electron进程,可以访问官网 流程模型 文档。 主进程 每个 Electron 应用都有一个单一的主进程,作为应用…

如何通过VSM识别生产过程中的信息流浪费?

VSM(价值流图),作为精益生产的核心工具之一,它不仅仅是一张简单的流程图,更是企业优化生产流程、提升价值传递效率的指南针。通过VSM,我们可以清晰地看到从原材料到成品交付的全过程,包括物料流…

kafka集群跨双网段及多网段通信问题解决(避免踩坑)

一、问题场景: 实际生产环境总存在很多kafka集群跨网段的问题。kafka集群可能存在多个网卡,对应多个网段。不同网段之间需要同时与集群通信,即跨网段生产消费问题。 单机 # broker 的唯一标识符,在 Kafka 集群中必须唯一 broker.…

uniapp修改uni-ui组件样式(对微信小程序/H5有效,vue3)

寻找要修改的样式 使用开发者工具找到具体要修改的class类名 修改 <style lang"scss">//.nav为上一级的class.nav::v-deep .uni-navbar--border {border-bottom-style: none !important;} </style>完整代码 <template><view><uni-na…

基于SpringBoot+Vue的在线考试管理系统

作者&#xff1a;计算机学姐 开发技术&#xff1a;SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等&#xff0c;“文末源码”。 专栏推荐&#xff1a;前后端分离项目源码、SpringBoot项目源码、Vue项目源码、SSM项目源码 精品专栏&#xff1a;Java精选实战项目…

24年Novartis诺华制药社招入职SHL测评:综合能力、性格问卷、动机问卷高分攻略

尊敬的求职者&#xff0c;若您渴望在医药行业的领军企业——诺华制药——开启您的职业生涯&#xff0c;深入了解其社招与校招测评流程至关重要。以下是对诺华SHL测评题型的全面解读&#xff0c;助您在招聘季脱颖而出。 测评构成 诺华的招聘测评由以下三个部分组成&#xff1a…