nginx配置代理ws协议

要在 Nginx 中配置 WebSocket 代理(ws 协议),你需要确保 Nginx 的版本至少是1.3.13,因为较早的版本不支持 WebSocket。以下是一个基本的 Nginx 配置示例,用于代理 WebSocket 连接:

http {upstream websocket_backend {server your.websocket.server:port;}server {listen 80;location / {proxy_pass http://websocket_backend;# WebSocket 特定的头部设置proxy_http_version 1.1;proxy_set_header Upgrade $http_upgrade;proxy_set_header Connection "Upgrade";proxy_set_header Host $host;# 解决 WebSocket 可能需要的其他头部proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;proxy_set_header X-Forwarded-Proto $scheme;}}
}

配置详解:

  1. upstream 定义upstream websocket_backend 定义了后端服务器池,你的 WebSocket 服务器地址和端口替换 your.websocket.server:port
  2. listen 指令listen 80 指定了 Nginx 监听的端口,可以根据需要调整。
  3. location 指令location / 部分定义了请求路径的匹配规则,这里 / 表示所有路径。
  4. proxy_passproxy_pass http://websocket_backend 指定将请求转发到上面定义的 WebSocket 后端服务器。
  5. WebSocket 必需的头部
    • proxy_http_version 1.1:确保使用 HTTP/1.1 协议。
    • proxy_set_header Upgrade $http_upgrade:处理协议升级。
    • proxy_set_header Connection "Upgrade":处理连接升级。
    • proxy_set_header Host $host:传递原始请求的 Host 头部。
  6. 其他头部
    • proxy_set_header X-Real-IP $remote_addr:传递客户端的真实 IP 地址。
    • proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for:传递客户端的原始 IP 地址,尤其在多级代理时很有用。
    • proxy_set_header X-Forwarded-Proto $scheme:传递原始请求的协议(http 或 https)。

保存以上配置文件后,重新加载或重启 Nginx 服务以应用更改:

sudo nginx -s reload
# 或者
sudo systemctl restart nginx

不是所有的头部都是必需的,但是有一些是推荐的或者在特定情况下可能是必需的,特别是在配置 WebSocket 代理时。

不是所有的头部都是必需的,但是有一些是推荐的或者在特定情况下可能是必需的,特别是在配置 WebSocket 代理时。

必需的头部:

  1. Upgradeproxy_set_header Upgrade $http_upgrade;

    • 这个头部告诉后端服务器要升级协议为 WebSocket。这是 WebSocket 连接所必需的。
  2. Connectionproxy_set_header Connection "Upgrade";

    • 这个头部也是告诉后端服务器要升级连接为 WebSocket。同样是 WebSocket 必需的部分。

可选的头部:

  1. Hostproxy_set_header Host $host;

    • 这个头部传递了原始请求的 Host 头部给后端服务器。在大多数情况下是有帮助的,特别是当后端服务器依赖于 Host 头部来识别请求。
  2. X-Real-IPX-Forwarded-For

    • proxy_set_header X-Real-IP $remote_addr;
    • proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    • 这些头部用于传递客户端的真实 IP 地址给后端服务器。在多级代理时,X-Forwarded-For 是非常有用的,可以显示所有经过的代理服务器 IP 地址。
  3. X-Forwarded-Protoproxy_set_header X-Forwarded-Proto $scheme;

    • 如果你的后端服务器需要知道原始请求的协议(http 或 https),这个头部就很有用。

需要根据具体情况调整:

  • 是否需要这些可选头部取决于你的后端服务器的需求和安全策略。一些后端服务器可能要求特定的头部才能正常工作,尤其是在负载均衡或安全性配置下。
  • 如果你不确定某个头部是否需要,可以首先尝试基本的必需头部。然后根据实际情况观察是否有任何问题或错误,如果有必要再添加额外的头部。

总结来说,虽然有些头部是必需的(Upgrade 和 Connection),但其他头部的添加与否取决于你的具体使用场景和后端服务器的要求。

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

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

相关文章

圆的面积并三角形面积并

三角形面积并 #include<iostream> #include<cstring> #include<algorithm> #include<cmath> #include<vector> using namespace std; const int maxn 110; #define x first #define y second typedef pair<double, double> PDD; const d…

9. proxy sql实现读写分离

proxy sql实现读写分离 一、proxysql介绍二、proxysql实现读写分离1、环境描述2、两台数据库配置读写分离&#xff0c;从库添加read_only参数3、安装proxysql3.1 proxysql内置库说明3.2 main库中主要的表说明 4、在后端主库创建允许proxysql连接的用户5、在proxysql上添加后端服…

假冒国企现形记:股权变更视角下的甄别分析

启信慧眼-启信宝企业版 假冒国企公告2024-06-07&#xff0c;中粮集团有限公司官网发布《关于冒名中粮企业名单公告》。公告显示&#xff0c;”有不法分子通过伪造相关材料等方式&#xff0c;以我集团子公司名义开展业务&#xff0c;进行虚假宣传。经核实&#xff0c;上述公司假…

伸展树(数据结构篇)

数据结构之伸展树 伸展树 概念&#xff1a; 伸展树是一颗对任意一个节点被访问后&#xff0c;就经过一系列的AVL树的旋转操作将该节点放到根上的特殊二叉查找树。伸展树能保证对树操作M次的时间复杂度为O(MlogN)&#xff0c;而当一个查找树的一个节点刚好处于查找树最坏的情…

物联网系统运维——实验备份与恢复,数据镜像软件DRBD介绍,DRBD的安装和应用,extundelete的安装和应用(重点),环境准备,配置设置

一.数据备份 1.数据备份的重要性 备份是系统中需要考虑的最重要的事项,虽然这在系统的整个规划,开发和测试过程中甚至占不到1%,看似不太重要且默默无闻的工作只有到恢复的时候才能真正体现出其重要性,任何数据的丢失与数据宕机&#xff0c;都是不可以被接收的。 2.数据备份策…

基于Pytorch框架构建LeNet-5模型

Pytorch 一、训练模型1.导入必要的库2.设置超参数3.数据预处理4.读取数据 二、定义卷积神经网络1.定义卷积神经网络2.定义学习率3.实例化模型并且移动到GPU4.选择优化器 三、定义调整学习率的函数1.定义调整学习率的函数 四、训练模型1.设置模型为训练模式2.遍历训练数据加载器…

文本三剑客之awk:

文本三剑客awk&#xff1a; grep 查 sed 增删改查 主要&#xff1a;增改 awk 按行取列 awk awk默认的分隔符&#xff1a;空格&#xff0c;tab键&#xff0c;多个空格自动压缩为一个。 awk的工作原理&#xff1a;根据指令信息&#xff0c;逐行的读取文本内容&#xff0c;然…

【Day02】0基础微信小程序入门-学习笔记

文章目录 模板与配置学习目标WXML 模板语法1.数据绑定&#xff08;类似于 Vue2 &#xff09;2. 事件绑定3. 条件渲染4.列表渲染 WXSS模板样式1. rpx尺寸单位2.样式导入3. 全局样式和局部样式 全局配置1. window2. tabBar 页面配置网络数据请求总结 持续更新~ 模板与配置 学习目…

C语言从头学25—— exit() 函数及 atexit() 函数

我们在 main 程序里通过 "return 0;" 这个语句来结束整个程序的运行&#xff0c;而在函数(也可以叫子程序)中使用 return 语句结束函数运行并带着返回值 (如有的话) 返回到调用者那里&#xff0c;然后继续运行后边的代码。如果在子程序那里就想结束整个程序的运行&am…

纯血国产的应用开发框架,Solon v2.8.4 发布

Solon 框架&#xff01; Java “纯血国产”应用开发框架。开放原子开源基金会&#xff0c;孵化项目。从零开始构建&#xff08;非 java-ee 架构&#xff09;&#xff0c;有灵活的接口规范与开放生态。 追求&#xff1a; 更快、更小、更简单提倡&#xff1a; 克制、简洁、高效…

easy-es Map类型字段序列化问题:Unexpected character (‘n‘ (code 110)):

Data IndexName("demo") public class EasyEsDemo {IndexIdprivate String id;private String name;private int age;// 这个Map字段因为NameFilter过滤器&#xff0c;导致fastjson序列化后为{null:"value"}这种形式&#xff0c;insert报错private Map<…

gateway整合sentinel限流

官方文档&#xff1a;https://github.com/alibaba/Sentinel/wiki/%E7%BD%91%E5%85%B3%E9%99%90%E6%B5%81 从 1.6.0 版本开始&#xff0c;Sentinel 提供了 Spring Cloud Gateway 的适配模块&#xff0c;可以提供两种资源维度的限流&#xff1a; route 维度&#xff1a;即在 Spr…

【第28章】Vue实战篇之用户重置密码

文章目录 前言一、调用接口二、重置密码三、界面展示总结 前言 这里我们来通过调用后端接口来完成密码重置功能并且修改成功清除缓存重新登录。 一、调用接口 export const userResetPasswordService (data)>{return request.patch(/user/updatePwd, data) }二、重置密码…

【数据结构与算法】详解循环队列:基于数组实现高效存储与访问

&#x1f493; 博客主页&#xff1a;倔强的石头的CSDN主页 &#x1f4dd;Gitee主页&#xff1a;倔强的石头的gitee主页 ⏩ 文章专栏&#xff1a;《数据结构与算法》 期待您的关注 ​ 目录 一、引言 &#x1f343;队列的概念 &#x1f343;循环队列的概念 &#x1f343;为什…

DIY灯光特效:霓虹灯动画制作教程

下面我们根据这张霓虹灯案例,教大家如何用智能动物霓虹灯闪烁的效果,大家可以根据思路,实现自己想要的动效效果,一起动手来做吧。 即时设计-可实时协作的专业 UI 设计工具 设置背景 新建画板尺寸为:800PX^600PX,设置背景色#120527。 绘制主题 输入自己喜欢文案,轮廓化,具体…

网络基础-协议

一、ARP 通过IP得到Mac 首先会查看缓存的arp表中是否有相应的IP和Mac对应关系&#xff0c;如果有直接进行包封装。如果没有则进行广播当对应的地址就收到广播包后会根据arp中的源地址进行单播返回相应的IP和Mac对应关系。 arp -a 查看现有的arp缓存 二、RARP反向地址解析 通过…

好公司也需要在好的价格买入

在《战胜华尔街》的第七章&#xff0c;林奇先生还进一步支出在合适的价格买入的重要性。他指出“那些股价线上涨幅度超过了收益线的股票&#xff0c;一般要么是横盘整理&#xff0c;要么是股价回调到与其盈利水平比较相当的合理价位。”因此&#xff0c;“在大牛市中&#xff0…

酒店多商户版微信小程序源码

一站式预订新体验 一、引言&#xff1a;打破传统&#xff0c;开启智能预订新时代 在数字化浪潮的推动下&#xff0c;传统的酒店预订方式已经逐渐无法满足现代人的需求。为此&#xff0c;一款集众多酒店商户于一体的“酒店多商户版小程序”应运而生&#xff0c;以其便捷、智能…

江门电子行业实施MES系统前后对比

在江门电子行业实施MES系统之前和之后的对比可以涉及以下几个方面&#xff1a; 生产效率提升&#xff1a;实施MES系统后&#xff0c;江门电子行业可以实现生产过程的实时监控和优化&#xff0c;减少生产中的浪费和停机时间&#xff0c;提高生产效率。 质量控制改善&#xff1a;…

【机器学习】机器学习重要方法——深度学习:理论、算法与实践

文章目录 引言第一章 深度学习的基本概念1.1 什么是深度学习1.2 深度学习的历史发展1.3 深度学习的关键组成部分 第二章 深度学习的核心算法2.1 反向传播算法2.2 卷积神经网络&#xff08;CNN&#xff09;2.3 循环神经网络&#xff08;RNN&#xff09; 第三章 深度学习的应用实…