当前位置: 首页 > news >正文

NGINX服务器配置实现加密的WebSocket连接WSS协议

一、背景

最近在做小程序开发,需要在nginx中配置websocket加密模式,即wss。初次配置wss时,踩了两个小时的坑,本文将踩坑过程分享给大家,有需要用到的伙伴可以直接copy即可实现,节省宝贵时间。
在这里插入图片描述

二、WebSocket网络通信协议介绍

WebSocket是一种网络通信协议,提供了一种在单个TCP连接上进行全双工通信的方式。WebSocket通信协议于2011年被IETF(互联网工程任务组)标准化为RFC 6455。
WebSocket协议有两种URI模式, 分别是:

  • ws://: 用于未加密的WebSocket连接;
  • wss://: 用于加密的WebSocket连接,类似于HTTPS。

wss://这种模式运作在TLS(传输层安全协议)之上,从而为WebSocket通信提供了加密和身份验证的功能。这对于防止中间人攻击和保护数据安全性非常关键,尤其是在传输敏感数据时。

要使用wss协议,服务器必须配置有效的SSL/TLS证书,这和配置HTTPS类似。当客户端通过wss://发起连接时,客户端和服务器之间会进行TLS握手,如果握手成功,之后的数据传输都将是加密的。

三、踩坑过程

初次配置,搜索了下,先看到了 https://developers.weixin.qq.com/community/develop/article/doc/000ca2306f8b180393dba276356413 ,被误解了,看了后,感觉很麻烦,看评论区,也有人在问按说的配置后,仍然无法实现,然后发现本篇只是一部分,又找到了另一部分 https://developers.weixin.qq.com/community/develop/article/doc/000c84d00087c0d497dbfca545d813,发现还需要借助第三方软件,看完文章,从常理思考,不应该这么复杂,所以就没有按这种方式进行尝试,已耽误了一些时间。

再次找到一个知乎上的 https://www.zhihu.com/question/285245830?utm_id=0, 关键配置截图如下:
在这里插入图片描述
copy关键配置到nginx,并修改为真实的服务器+端口, 但ngixn reload失败, 只检查了中英文符号,没有深究,关键是不熟悉,也没找到原因,后面才发现,upgrade应该是大写U才可以,这块测试验证也耽误了一些时间。

第三次找到https://blog.csdn.net/liulangerde/article/details/104571552, 关键配置截图如下:
在这里插入图片描述
看到这里Upgrade是大写,抱着死马当活马医的态度,修改试了下,居然真可以了。
在这里插入图片描述
在这里插入图片描述

四、总结:

Nginx的配置,作为程序员,并没有深入去学习,只是会常用的一些配置,nginx的文档也不常使用,通常都是抱着通过搜索快速找到答案想法,注定会踩了一些坑,后面试了GPT4,回答的结果也是小写的upgrade, 故分享给大家。

参考:https://developers.weixin.qq.com/community/develop/article/doc/000ca2306f8b180393dba276356413 这个是被误入歧途,耽搁了好久
https://www.zhihu.com/question/285245830?utm_id=0 小写问题,也没成功。
https://blog.csdn.net/liulangerde/article/details/104571552 这个直接复制,测试就可以了。

http://www.lryc.cn/news/305800.html

相关文章:

  • 5个免费文章神器,用来改写文章太方便了
  • 详细教程!VMware Workstation Pro16 安装 + 创建 win7 虚拟机!
  • Python文件和异常(二)
  • 大模型+影像:智能手机“上春山”
  • 8-pytorch-损失函数与反向传播
  • MySQL高级特性篇(8)-数据库连接池的配置与优化
  • mac下使用jadx反编译工具
  • 分布式一致性软件-zookeeper
  • 企业计算机服务器中了babyk勒索病毒怎么办?Babyk勒索病毒解密数据恢复
  • 板块一 Servlet编程:第五节 Cookie对象全解 来自【汤米尼克的JAVAEE全套教程专栏】
  • 自动驾驶---Motion Planning之Path Boundary
  • Leetcode 3048. Earliest Second to Mark Indices I
  • 从源码学习单例模式
  • axios介绍和使用
  • redis雪崩问题
  • [SUCTF 2019]EasySQL1 题目分析与详解
  • TestNG与ExtentReport单元测试导出报告文档
  • 【JavaEE】_form表单构造HTTP请求
  • Mysql中INFORMATION_SCHEMA虚拟库使用
  • 【《高性能 MySQL》摘录】第 2 章 MySQL 基准测试
  • 常用的Web应用程序的自动测试工具有哪些
  • 人工智能与开源机器学习框架
  • 高通XBL阶段读取分区
  • [极客大挑战2019]upload
  • [FastDDS] 基于eProsima FastDDS的移动机器人数据中间件
  • 实现外网手机或者电脑随时随地远程访问家里的电脑主机(linux为例)
  • spring boot集成redis
  • Docker的常用命令
  • JSON简介与基本使用
  • 好物周刊#40:多功能文件管理器