Nginx配置WebSocket(WS)和WebSocket Secure(WSS)的完整指南
😀点点关注~
😀点点关注~
😀点点关注~
Nginx是一款广泛使用的高性能Web服务器和反向代理服务器。除了传统的HTTP和HTTPS协议支持外,Nginx还可以配置WebSocket(WS)和WebSocket
Secure(WSS),以便实现实时双向通信。本文将提供关于如何在Nginx中配置和使用WebSocket和WebSocket
Secure的详细指南。
安装教程:
要开始配置WebSocket和WebSocket Secure,您需要确保已正确安装Nginx。以下是在不同操作系统上安装Nginx的简单步骤:
-
Ubuntu或Debian:
- 打开终端并输入以下命令:
sudo apt update sudo apt install nginx
- 打开终端并输入以下命令:
-
CentOS或Fedora:
- 打开终端并输入以下命令:
sudo dnf install nginx
- 打开终端并输入以下命令:
-
Windows:
- 访问Nginx官方网站(https://nginx.org/)并下载适用于Windows的最新版本。
- 双击安装程序并按照提示完成安装。
功能介绍:
WebSocket是一种现代化的通信协议,它通过单个TCP连接实现全双工通信。相比传统的HTTP请求,WebSocket提供了更低的延迟和更高的实时性。Nginx通过支持WebSocket和WebSocket Secure,使得您可以将这些功能集成到您的Web应用程序中。
使用方法:
-
配置WebSocket:
- 打开Nginx配置文件(通常位于
/etc/nginx/nginx.conf或/usr/local/nginx/conf/nginx.conf)。 - 在
http块内添加以下配置:map $http_upgrade $connection_upgrade {default upgrade;'' close; }server {listen 80;server_name example.com;location /websocket {proxy_pass http://backend;proxy_http_version 1.1;proxy_set_header Upgrade $http_upgrade;proxy_set_header Connection $connection_upgrade;} } - 替换
example.com为您的域名,/websocket为WebSocket端点的路径,http://backend为实际处理WebSocket连接的后端服务器地址。
- 打开Nginx配置文件(通常位于
-
配置WebSocket Secure(WSS):
- 配置WebSocket Secure与配置WebSocket类似,唯一的区别是使用SSL证书。
- 为您的域名获取并安装有效的SSL证书(可以使用Let’s Encrypt等工具)。
- 修改Nginx配置文件,添加以下配置:
server {listen 443 ssl;server_name example.com;ssl_certificate /path/to/ssl_certificate.pem;ssl_certificate_key /path/to/ssl_certificate_key.pem;location /websocket {proxy_pass http://backend;proxy_http_version 1.1;proxy_set_header Upgrade $http_upgrade;proxy_set_header Connection $connection_upgrade;} } - 将
/path/to/ssl_certificate.pem和/path/to/ssl_certificate_key.pem替换为您的SSL证书路径。
示例代码:
以下是一个简单的示例代码,展示了如何在JavaScript中使用WebSocket与Nginx配置的WebSocket服务器进行通信:
const socket = new WebSocket('ws://example.com/websocket');// 连接建立时触发
socket.onopen = function() {console.log('WebSocket连接已建立');// 向服务器发送消息socket.send('Hello, server!');
};// 接收服务器发送的消息
socket.onmessage = function(event) {const message = event.data;console.log('收到服务器消息:', message);
};// 连接关闭时触发
socket.onclose = function() {console.log('WebSocket连接已关闭');
};// 发生错误时触发
socket.onerror = function(error) {console.error('WebSocket错误:', error);
};
利弊:
使用Nginx配置WebSocket和WebSocket Secure具有以下优点和注意事项:
优点:
- 高性能:Nginx是一款高性能的Web服务器,能够处理大量并发连接,适用于实时通信场景。
- 反向代理:Nginx作为反向代理服务器,可以将WebSocket请求转发到后端服务器,分担服务器负载。
- 安全性:通过配置WebSocket Secure,可以使用SSL证书进行加密通信,增加数据的安全性。
- 灵活性:Nginx的配置文件可以根据需求进行灵活调整和扩展。
注意事项:
- 版本兼容性:确保您使用的Nginx版本支持WebSocket和WebSocket Secure的配置。
- 负载均衡:在实际生产环境中,可能需要使用负载均衡配置多个后端服务器来处理WebSocket连接。
- SSL证书管理:配置WebSocket Secure需要有效的SSL证书,因此需要注意证书的安装和更新。
总结:
WebSocket提供了实时双向通信的能力,而WebSocket Secure通过SSL加密保障了通信的安全性。使用Nginx作为反向代理服务器,您可以轻松地将WebSocket请求转发到后端服务器,并且能够处理大量并发连接。但请确保使用适当的版本,注意负载均衡和SSL证书的管理。希望这篇文章对您理解和应用Nginx配置WebSocket和WebSocket Secure有所帮助!
相关文章:
Nginx配置WebSocket(WS)和WebSocket Secure(WSS)的完整指南
😀点点关注~ 😀点点关注~ 😀点点关注~ Nginx是一款广泛使用的高性能Web服务器和反向代理服务器。除了传统的HTTP和HTTPS协议支持外,Nginx还可以配置WebSocket(WS)和WebSocket Secure(WSS&…...
链表--part 1--链表基础理论(概括)
文章目录 单链表双链表循环链表链表链表的定义删除节点增加节点 首先什么是链表,链表是一种通过指针串联在一起的线性结构,每一个节点由两部分组成,一个是数据域一个是指针域(存放指向下一个节点的指针),最…...
【V2G】电动汽车接入电网优化调度研究(Matlab代码实现)
💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…...
Excel中时间戳与标准日期格式的互相转换
背景 在excel中将13位毫秒级别的时间戳转换为标准的日期格式(yyyy-mm-dd hh:mm:ss.000),使用如下模板 TEXT(<source_cell>/1000/8640070*36519,"yyyy-mm-dd hh:mm:ss.000") 在excel中将10位秒级别的时间戳转换为标准的日期格式(yyyy-mm-dd hh:mm:ss…...
【Kafka集群】Kafka针对用户做ACL权限控制
在 Kafka 3.3.1 中,可以使用 ACL(Access Control List)控制用户对 topic 的访问权限。以下是一些基本示例: 创建一个名为 my-topic 的 topic 在命令行中执行以下命令创建一个名为 my-topic 的 topic: kafka-topics.…...
国内外数据安全治理框架介绍与分析
本文将介绍和分析:微软 DGPC框架,Gartner 数据安全治理框架 DSG,数据安全能力成熟度模型 DSMM 数据治理与数据安全治理系列文章 https://luozhonghua.blog.csdn.net/article/details/130417106 数据安全治理流程设计_luozhonghua2000的博客-CSDN博客 数据治理解决之道探讨…...
【Nodejs】使用Nodejs搭建HTTP服务,并实现公网远程访问
文章目录 前言1.安装Node.js环境2.创建node.js服务3. 访问node.js 服务4.内网穿透4.1 安装配置cpolar内网穿透4.2 创建隧道映射本地端口 5.固定公网地址 转载自内网穿透工具的文章:使用Nodejs搭建HTTP服务,并实现公网远程访问「内网穿透」 前言 Node.js…...
面试题之介绍自己测试的项目,担任的角色和做出的成果
在测试面试过程中,面试官想要了解一个同学对项目的掌握程度或一些例如沟通总结的软技能情况,该怎么考察呢? 一个具有代表性的题目来了:简单介绍一下自己测试的项目,担任的角色和做出的成果。 一、面试官角度 1、考察是否真正做过该…...
HTB靶机012-Valentine-WP
012-Valentine 靶机IP:10.10.10.79 Scan nmap端口扫描: ┌──(xavier㉿kali)-[~] └─$ sudo nmap -sSV -T4 10.10.10.79 -F Starting Nmap 7.93 ( https://nmap.org ) at 2023-04-29 00:47 CST Nmap scan report for 10.10.10.79 Host is up (0.30s…...
微信小程序nodejs+vue社区居民健康服务系统uniapp
系统分为社区居民,管理员,县区工作员,社区工作员三个角色 县区工作员的主要功能: 1.对社区的工作人员进行添加,修改,删除,查询 2.疫情专栏的信息进行添加,修改,删除&…...
尝试探索水下目标检测,基于yolov5轻量级系列模型n/s/m开发构建海底生物检测系统
其实,水下目标检测相关的项目早在之前就已经做了几个了,但是没有系统性地对比过,感兴趣的话可以先看下之前的文章,如下: 《基于自建数据集【海底生物检测】使用YOLOv5-v6.1/2版本构建目标检测模型超详细教程》 《基于…...
大数据Doris(二十四):Doris数据Insert Into导入方式介绍
文章目录 Doris数据Insert Into导入方式介绍 一、语法及参数 二、案例 三、注意事项 1、关于插入数据量 2、关于insert操作返回结果 3、关于导入任务超时 4、关于Session变量 5、关于数据导入错误 Doris数据Insert Into导入方式介绍 Doris 提供多种数据导入方案&…...
macOS Ventura 13.5beta (22G5027e)发布
系统介绍 黑果魏叔 5 月 20 日消息,苹果今日向 Mac 电脑用户推送了 macOS 13.5 开发者预览版 Beta 更新(内部版本号:22G5027e),本次更新距离上次发布隔了 17 天。 macOS Ventura 带来了台前调度、连续互通相机、Face…...
基于SpringBoot的财务管理系统的设计与实现
背景 财务管理系统能够通过互联网得到广泛的、全面的宣传,让尽可能多的员工了解和熟知财务管理系统的便捷高效,为管理者和员工提供了服务,节省人力、物力和时间,提高工作效率。 系统设计 为了更好的去理清本系统整体思路&#…...
使用OpenCV进行肺炎诊断检测
肺炎是一种由感染引起的严重呼吸道疾病,特别是在高危人群中,可能会出现危及生命的并发症。必须尽快诊断和治疗肺炎,以最大限度地提高患者康复的机会。 诊断过程并不容易,需要一些医学实验室工具和先进的医疗技能,但我们…...
北华大学第九届程序设计竞赛 题解
5.14和队友VP一场,第二次VP,状态明显比第一次好很多,总共A了7题,基本是能做出来的都做出来了,最后还剩下接近2小时的时间。。。。。 A "北华"有几何 思路:数图片中“北华”的数量,直…...
【Java算法题】剑指offer_01数据结构
前言 刷题链接: https://www.nowcoder.com/exam/oj/ta?page2&tpId13&type265 1. 链表 JZ24 反转链表 思路:基本操作,如下所示。 /* public class ListNode {int val;ListNode next null;ListNode(int val) {this.val val;} }…...
最简单配置jenkins容器使用宿主机的docker方法
构建镜像和发布镜像到harbor都需要使用到docker命令。而在Jenkins容器内部安装Docker官方推荐直接采用宿主机带的Docker即可 设置Jenkins容器使用宿主机Docker 设置宿主机docker.sock权限 chown root:root /var/run/docker.sock chmod orw /var/run/docker.sock 添加数据卷 v…...
Android aidl及binder基础知识巩固
作者:义华 1、什么是binder binder是android framework提供的,用于跨进程方法调用的机制,具有安全高效等特点。 我们知道,在 Android 系统中,每个应用程序都运行在一个独立的进程中,各个进程之间需要进行…...
[日记]LeetCode算法·二十五——二叉树⑤ AVL树(插入+删除)附代码实现
本章的代码实现基于上一篇BST与优先队列的基类进行平衡二叉树,即AVL树。 文章目录 AVL的概念AVL查询效率AVL的插入1.插入节点2.更新平衡因子BF3.旋转调整树的结构3.1 LL 右旋3.2 RR 左旋3.3 LR 左右双旋3.4 RL 右左双旋 4 插入总结 AVL的删除1.寻找删除节点2.更新平…...
智慧工地云平台源码,基于微服务架构+Java+Spring Cloud +UniApp +MySql
智慧工地管理云平台系统,智慧工地全套源码,java版智慧工地源码,支持PC端、大屏端、移动端。 智慧工地聚焦建筑行业的市场需求,提供“平台网络终端”的整体解决方案,提供劳务管理、视频管理、智能监测、绿色施工、安全管…...
令牌桶 滑动窗口->限流 分布式信号量->限并发的原理 lua脚本分析介绍
文章目录 前言限流限制并发的实际理解限流令牌桶代码实现结果分析令牌桶lua的模拟实现原理总结: 滑动窗口代码实现结果分析lua脚本原理解析 限并发分布式信号量代码实现结果分析lua脚本实现原理 双注解去实现限流 并发结果分析: 实际业务去理解体会统一注…...
多模态大语言模型arxiv论文略读(108)
CROME: Cross-Modal Adapters for Efficient Multimodal LLM ➡️ 论文标题:CROME: Cross-Modal Adapters for Efficient Multimodal LLM ➡️ 论文作者:Sayna Ebrahimi, Sercan O. Arik, Tejas Nama, Tomas Pfister ➡️ 研究机构: Google Cloud AI Re…...
MySQL 部分重点知识篇
一、数据库对象 1. 主键 定义 :主键是用于唯一标识表中每一行记录的字段或字段组合。它具有唯一性和非空性特点。 作用 :确保数据的完整性,便于数据的查询和管理。 示例 :在学生信息表中,学号可以作为主键ÿ…...
Proxmox Mail Gateway安装指南:从零开始配置高效邮件过滤系统
💝💝💝欢迎莅临我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:「storms…...
【Linux手册】探秘系统世界:从用户交互到硬件底层的全链路工作之旅
目录 前言 操作系统与驱动程序 是什么,为什么 怎么做 system call 用户操作接口 总结 前言 日常生活中,我们在使用电子设备时,我们所输入执行的每一条指令最终大多都会作用到硬件上,比如下载一款软件最终会下载到硬盘上&am…...
Axure 下拉框联动
实现选省、选完省之后选对应省份下的市区...
软件工程 期末复习
瀑布模型:计划 螺旋模型:风险低 原型模型: 用户反馈 喷泉模型:代码复用 高内聚 低耦合:模块内部功能紧密 模块之间依赖程度小 高内聚:指的是一个模块内部的功能应该紧密相关。换句话说,一个模块应当只实现单一的功能…...
2.3 物理层设备
在这个视频中,我们要学习工作在物理层的两种网络设备,分别是中继器和集线器。首先来看中继器。在计算机网络中两个节点之间,需要通过物理传输媒体或者说物理传输介质进行连接。像同轴电缆、双绞线就是典型的传输介质,假设A节点要给…...
数据库正常,但后端收不到数据原因及解决
从代码和日志来看,后端SQL查询确实返回了数据,但最终user对象却为null。这表明查询结果没有正确映射到User对象上。 在前后端分离,并且ai辅助开发的时候,很容易出现前后端变量名不一致情况,还不报错,只是单…...
