windows下采用 nginx配置websocket支持wss流程


第一步、安装OpenSSL

(1)下载OpenSSL软件包

地址:https://slproweb.com/products/Win32OpenSSL.html

OpenSSL版本说明:

Win64 OpenSSL v1.1.1wLight,安装Win64 OpenSSL v1.1.1w最常用的软件包

Win64 OpenSSL v1.1.1w,安装Win64 OpenSSL v1.1.1w完整软件包

Win32 OpenSSL v1.1.1w Light,安装Win32 OpenSSL v1.1.1w最常用的软件包

Win32 OpenSSL v1.1.1w,安装Win32 OpenSSL v1.1.1w完整软件包

在这里插入图片描述


(2)、安装

在这里插入图片描述

选择安装目录

在这里插入图片描述


注意⚠️ 这一步,“Select Additional Tasks”,选择第二项 The OpenSSL binaries(/bin) directory。

原因:如果选择第一项,拷贝到系统目录,当其他软件使用的OpenSSL版本我们安装这个版本不同时,可能导致该软件无法使用。

所以选择将dll安装在OpenSSL安装目录下即可。

在这里插入图片描述


取消赞助,直接点完成即可。

在这里插入图片描述


(3)、验证安装

直接在cmd中,输入命令,查看OpenSSL版本

openssl version -a

如果你和我一样,并不是我们安装的OpenSSL 1.1.1w版本, 该怎么办呢?

如图:

在这里插入图片描述


解决方法:

在系统环境变量 path 字段中,将我们新安装的openssl目录移动到顶部即可。

在这里插入图片描述


再次验证,查看OpenSSL版本正确。

在这里插入图片描述


第二步、使用 OpenSSL 生成 SSL Key 和 CSR 文件

openssl req -new -newkey rsa:2048 -sha256 -nodes -out game_123.csr -keyout game_123.key -subj "/C=CN/ST=Sichuan/L=Chengdu/O=Nubomed Inc./OU=Web Security/CN=test.game.com"

下面是上述命令相关字段含义:

-new:指定生成一个新的CSR文件。

-nodes:指定密钥文件不被加密。

-sha256:指定摘要算法。

-newkey rsa:2048:指定密钥类型和长度。

-subj :相关字段含义

  • C:Country ,单位所在国家,为两位数的国家缩写,如: CN 是中国

  • ST 字段: State/Province ,单位所在州或省

  • L 字段: Locality ,单位所在城市 / 或县区

  • O 字段: Organization ,单位名称

  • OU 字段: Organization Unit,下属部门名称,也常用于显示证书相关信息,如证书类型、证书产品名称、身份验证类型、验证内容等

  • CN 字段: Common Name ,网站域名


第三步、生成crt文件

openssl x509 -trustout  -req -days 3650 -in game_123.csr -signkey game_123.key -out game_123.crt

第四步、下载nginx

下载地址:http://nginx.org/en/download.html

在这里插入图片描述


第五步、解压nginx-1.18.0.zip,在根目录下创建ssl文件夹,将上面生成的crt证书和key文件,复制到该目录下

在这里插入图片描述


第六步、修改配置文件nginx.conf

http内添加:

map $http_upgrade $connection_upgrade {  default upgrade;  '' close;  }  upstream websocket{server localhost:123;}

server添加:

    server {listen       123;server_name game.123.com;ssl on;ssl_certificate D:/nginx-1.18.0/ssl/game_123.crt;ssl_certificate_key D:/nginx-1.18.0/ssl/game_123.key;ssl_session_timeout 30m;ssl_verify_client off;location / {proxy_pass http://websocket;proxy_http_version 1.1;proxy_set_header Upgrade $http_upgrade;proxy_set_header Connection "upgrade";}}

如图:

在这里插入图片描述

第七步,启动 nginx 服务

第八步、测试wss连接方式

wss://game.123:123/

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

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

相关文章

动态头部:统一目标检测头部与注意力

论文地址:https://arxiv.org/pdf/2106.08322.pdf ai阅读论文_论文速读_论文阅读软件-网易有道速读 创新点是什么? 这篇文档的创新点是提出了一种统一的方法,将对象检测头和注意力机制结合起来。作者在文中提出了一种称为Dynamic Head的方法,通过引入…

k8s学习整理文档

整理文档 ‍ ‍ 实验环境 服务器 最低配置要求: 2 核虚拟 CPU4 GB 内存20 GB 储存空间X 4 台 (三台集群,一台镜像仓库服务器) 网络环境 由于搭建网络需要,同时要让各个主机互通,因此这里需要对云服务器设置专门的网络(同时也需要开放服务器对应的公网 IP) 在云…

构建高效稳定的Linux服务器环境

构建高效稳定的Linux服务器环境 构建高效稳定的Linux服务器环境对于保障系统的运行稳定性和性能至关重要。下面将介绍一些实用指南和最佳实践,帮助您构建一个高效稳定的Linux服务器环境。 更新系统和软件 定期更新系统和软件是维护Linux服务器环境稳定性和安全性…

matplotlib使用案例3:通过自定义图例类实现图例的任意方向(行 or 列)的排列

这个方法的核心依然是基于matplotlib.legend._get_legend_handles_labels函数。然后将得到的handlers, labels进行重排,使得即使再调用Legend类的绘制方法对图例进行列排列,最终的效果也是图例的行显示,如[1、2、3、4、5、6],当指定ncols=2,Legend类的绘制方法得到的图例如…

JS前端高频面试

JS数据类型有哪些,区别是什么 js数据类型分为原始数据类型和引用数据类型。 原始数据类型包括:number,string,boolean,null,undefined,和es6新增的两种类型:bigint 和 symbol。&am…

STM32—启用按键

​ 目录 1 、电路构成及原理图 2、编写实现代码 main.c main.h key.c 3、代码讲解 4、 烧录到开发板调试、验证代码 5、检验效果 本人使用的是朗峰 STM32F103 系列开发板,此笔记基于这款开发板记录。 1 、电路构成及原理图 重要!一定先用短路…

LabVIEW轨道交通列车牵引制动试验平台

LabVIEW轨道交通列车牵引制动试验平台 概述 面对城市轨道交通领域对于高效、准确牵引制动系统的迫切需求,开发了一套基于LabVIEW软件与硬件相结合的试验平台。该平台模拟列车的牵引、制动等工况,通过高精度的数据采集与实时图形化展示,提升…

langchain 为什么无法按照预期的效果进行回复

如果在使用 Langchain 或类似的工具时遇到了无法按照预期效果回复的问题,可能有几个原因: 理解偏差:AI 可能没有正确理解您提供的原文或问题的意图。这可能是因为原文表述不够清晰或者 AI 在处理特定语言结构时出现偏差。信息缺失&#xff1…

工具:clang-format使用

Visual Studio 在扩展-》管理扩展-》联机-》搜索Format on Save (for VS2022)插件,并安装 安装需要关闭VS,安装后重新打开vs。 这样每次保存源文件时就会自动调用vs默认的clang-format.exe对源码进行缩进,空格等进行格式化 如果想使用自定…

c# 哈希表(Hash Table)

在 C# 中,哈希表(Hash Table)是一种基于哈希函数实现的数据结构,用于存储键值对。哈希表允许快速插入、删除和查找操作,其性能通常比线性数据结构(如数组或链表)更优秀,特别在大数据…

centos docker已启动的jenkin 配置 maven 并重启

在 CentOS 系统中,如果已经有一个正在运行的 Docker 容器中的 Jenkins,并且你想要更新配置以使用宿主机上的 Maven,可以按照以下步骤操作: 查看当前运行的 Jenkins 容器: docker ps -a找到你的 Jenkins 容器 ID 或名称…

3028. 边界上的蚂蚁

说在前面 🎈不知道大家对于算法的学习是一个怎样的心态呢?为了面试还是因为兴趣?不管是出于什么原因,算法学习需要持续保持。 题目描述 边界上有一只蚂蚁,它有时向 左 走,有时向 右 走。 给你一个 非零 整…

CSS列表学习2

之前学习了列表&#xff1b;继续熟悉&#xff1b; <!DOCTYPE html> <html> <head> <meta http-equiv"Content-Type" content"text/html; charsetutf-8"/><title></title><meta charset"utf-8" /><…

leetcode hot100单词拆分

在本题中&#xff0c;我们是要把一个字符串&#xff0c;判断是否能用给的字符串数组中的单词进行拆分&#xff0c;如果可以则返回true&#xff0c;不能的话则返回false。这个题一开始看无法与背包问题联系在一起。但仔细考虑&#xff0c;就是用物品&#xff08;给的字符串数组中…

操作系统学习案例20240222-liunx自定义systemctl系统服务

1 概述信息 通过tar安装的mysql一般需要直接使用mysql safe进行启动。&#xff08;其实用service比较简洁&#xff0c;谁让现在都在用systemctl了&#xff09; 2 使用service方案 cp ${mysql}sql/support-files/mysql.server /etc/init.d/mysqld service start mysqld 3 使用…

【uni.app】动态赋值字典类数据的问题及解决方案

示例有data属性 data() {return {RecordDic: {}, //键为年月日期&#xff0c;值为对应年月数据test: ,//用于刷新数据视图}}, 有以下动态数据&#xff1a; //动态数据格式 DayRecordDic{2024-02-01:{type:0,hours:8.59,} } //获取动态数据GetDynamicData() {var that this…

Android GMS版本连接wifi后提示网络受限问题

目录 问题现象&#xff1a; 原因分析&#xff1a; 解决方法&#xff1a; GMS版本 问题现象&#xff1a; Android系统连接wifi后在SystemUI上wifi图标会显示一个感叹号&#xff0c;提示网络受限。但实际网络能访问。 原因分析&#xff1a; 可参考&#xff1a;Android9.0 网…

OpenCart程序结构与业务逻辑

一、程序业务逻辑说明 在 OpenCart 中&#xff0c;index.php 文件是整个应用程序的入口文件&#xff0c;它负责初始化应用程序并调度请求。以下是 index.php 文件加载执行的流程&#xff1a; 1. **设置路径常量&#xff1a;** - index.php 首先定义了一些重要的路径常量&…

HarmonyOS Stage模型 权限申请

配置声明权限 在module.json5配置文件中声明权限。不论是system_grant还是user_grant类型都需要声明权限&#xff0c;否则应用将无法获得授权。 {"module" : {// ..."requestPermissions":[{"name": "ohos.permission.DISCOVER_BLUETOOTH…

数据分析(二)自动生成分析报告

1. 报告生成思路概述 怎么快速一份简单的数据分析报告&#xff0c;注意这个报告的特点&#xff1a; --网页版&#xff0c;可以支持在线观看或者分享HTML文件 --标题&#xff0c;动图&#xff0c;原始数据应有尽有 --支持交互&#xff0c;比如plotly交互画面&#xff0c;数据…