配置之前需要知道ws协议和wss协议的区别

一、WS 和 WSS 的区别

WebSocket 协议是 html5 的一种通信协议,可以使客户端和服务端双向数据传输更加简单快捷,并且在 TCP 连接进行一次握手后,就可以持久性连接,同时允许服务端对客户端推送数据。

WS 协议和 WSS 协议均是 WebSocket 协议的 SCHEM。也是统⼀的资源标志符。WS是非安全的,没有证书;WSS是安全的,需要SSL证书。

WS 一般默认是 80 端口,而 WSS 默认是 443 端口,大多数网站用的就是 80 和 433 端口。

http 协议下使用 WS,在 https 协议下使用 WSS。

WebSocket协议的特点:

建立在 TCP 协议之上,服务端实现容易;

与 HTTP 协议有良好的兼容性,握手时不容易被屏蔽,可以通过各种 HTTP 代理服务器;

数据轻量,实时通讯;

可以发送文本和二进制数据;

不限制同源,客户端可以与任意服务器端进行通讯。

二、Nginx 下配置 WS

WS 配置

server {listen 8001;location / {proxy_pass http://192.168.188.126:9007;proxy_http_version 1.1;proxy_set_header Upgrade $http_upgrade;proxy_set_header Connection "Upgrade";}
}

但是在测试的话会有单独的路径,刚开始我的配置是这个样子:

location /ws/ {proxy_pass http://127.0.0.1:9007;proxy_http_version 1.1;proxy_set_header Upgrade $http_upgrade;proxy_set_header Connection "Upgrade";}

访问socket的时候的路径为:

前端连接的时候:

但是一直报错:

我在想,访问/ws的时候将请求代理到127.0.0.1:9007
,那 /ws/webSocket就应该转发到127.0.0.1:9007/ws/webSocket

突然发现,多了个前缀有木有,我在服务器路径为:/webSocket

修改:

第二天在帖子上看到一句话:

rewrite ^/api/(.*)$ /$1 break;

这句话的含义就是:

rewrite “^/api/(.)$” /$1 break,路径重写:
“^/api/(.
)$”:匹配路径的正则表达式,用了分组语法,把/api/以后的所有部分当做1组
/$1:重写的目标路径,这里用$1引用前面正则表达式匹配到的分组(组编号从1开始),即/api/后面的所有。这样新的路径就是除去/api/以外的所有,就达到了去除/api前缀的目的
break:指令,常用的有2个,分别是:last、break
last:重写路径结束后,将得到的路径重新进行一次路径匹配
break:重写路径结束后,不再重新匹配路径。

= : 用于不含正则表达式的 uri 前,要求请求字符串与 uri 严格匹配,如果匹配成功,就停止继续向下搜索并立即处理该请求。
~ : 用于表示 uri 包含正则表达式,并且区分大小写。
~* : 用于表示 uri 包含正则表达式,并且不区分大小写。
^~ : 用于不含正则表达式的 uri 前,要求 Nginx 服务器找到标识 uri 和请求字符串匹配度最高的 location 后,立即使用此 location 处理请求,而不再使用 location 块中的正则 uri 和请求字符串做匹配。

配置这句话就可以去掉路径:

location /ws/ {rewrite ^/ws/(.*)$ /$1 break;proxy_pass http://1.116.37.17:9007;proxy_http_version 1.1;proxy_set_header Upgrade $http_upgrade;proxy_set_header Connection "Upgrade";}

服务区只使用/webSocket就可以了

三、Nginx 下配置 WSS

WSS 配置

server {listen 443 ssl;server_name im-wss-api.xxx.xxx;ssl_certificate ../cert/server.crt;ssl_certificate_key ../cert/server.key;ssl_session_timeout 5m;ssl_protocols TLSv1 TLSv1.1 TLSv1.2;ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;ssl_prefer_server_ciphers on;location / {proxy_pass http://localhost:8088;proxy_http_version 1.1;proxy_set_header Upgrade $http_upgrade;proxy_set_header Connection "Upgrade";}
}

我使用的是ws协议,配置完成之后:

连接成功!

Nginx去配置socket的时候,发现nginx没有配置ws/wss协议,配置步骤如下相关推荐

  1. nginx实现对websocket加密协议wss协议的反向代理以及websocket整合springboot入门(踩坑)

    出发点 最近公司需要有一个推送前端消息的需求 首选websocket进行推送,也做过客服系统接触过,最近看了一点websocket的相关内容记录总结一下. 什么是websocket websocket ...

  2. 使用nginx解决一台服务器中ws协议与wss协议共存问题 2017-07-09 13:29:06

    https://www.worldflying.cn/article-id-13.html https://tieba.baidu.com/p/5213484390?red_tag=000961462 ...

  3. 宝塔Nginx搭建多个WSS协议

    websocket配置wss协议,步骤如下: 一.宝塔点击:网站->设置->配置文档,在配置文件中 server上部添加以下代码 map $http_upgrade $connection ...

  4. 实验二 帧中继协议配置

    计算机网络实验 实验二 帧中继协议配置 一.实验目的 二.实验内容 三.实验条件 四.实验步骤 4.1 连接帧中继交换网 4.2 创建DLCI 4.3 创建串行接口间的虚电路映射关系 4.4 配置路由 ...

  5. Linux 安装配置JDK 、 MySQL 、nginx

    今天我来讲一下在Linux下各环境的搭建,主要就讲一下jdk.MySQL.和一个代理服务器nginx 1. jdk的安装配置 1)卸载自带openjdk 当我们拿到一个全新的ECS的时候上面有的会自带 ...

  6. Nginx https 协议配置 ssl_protocols 的相关问题

    1. Nginx https相关配置 官方说明:详细看这里 本文主要针对以下两个主要配置从代码层次进行分析: 协议配置: Syntax: ssl_protocols [SSLv2] [SSLv3] [ ...

  7. nginx配置wss协议

    需求:nginx配置websocket协议连接,(背景,在一个使用一个免费的仅仅支持单域名的证书时,既要支持https协议,也要支持wss协议时,我们可以配置一个nginx根据不同的路径去跳转) 我所 ...

  8. 手把手教你配置:Jenkins+Github+Webhook +Nginx自动化打包部署Vue项目

    前面的话 为了前端项目的工程化,减少项目发布环境的部署,实现自动化打包部署. 传统的做法,在服务器初始一个 git 仓库,然后每次代码更新后,手动去拉取,次数多了也就烦了,而自动化打包部署每次只需在项 ...

  9. 基于docker部署前后端分离项目--->docker+Dockerfile+vue+nginx+uwsgi+django+socket+负载均衡

    1. 介绍 本文基于阿里云服务器,安装的ubuntu20.04系统 适用于conten7.5系列 适用于ubuntu16.04以上系列 vue已经打包完成,所以不能使用我的vue项目 2. 部署 部署 ...

最新文章

  1. win10系统搭建Tensorflow深度学习平台详细步骤
  2. rhel配置磁盘分区_rhel配置磁盘分区_centos系统三套硬盘分区方案[图文设置版]
  3. 初识Hibernate 缓存
  4. JQuery 判断滚动条是否到底部
  5. apache camel_Apache Camel简介
  6. java Switch里面的类型问题
  7. 在英特尔® 架构平台上开发和优化基于 NDK 的 Android 游戏应用
  8. AC日记——单词替换 1.7 21
  9. 灭屏取消过温减流功能
  10. 莫烦PYTHON | Tensorflow教程——Tensorflow简介(第一章)
  11. 人工神经网络图像识别,人脸识别神经网络模型
  12. 10分钟看明白大M法和两阶段法
  13. 专利与论文-5:《专利说明书》的撰写与注意事项
  14. 南京大学2021计算机考研复试线是多少,快讯!南京大学2021年考研复试线公布,金融专硕425分!...
  15. c语言求圆锥的表面积和体积_c语言问题,输入圆锥的半径和高,得出表面积和体积。请问程序该如何改....
  16. 怎么查询计算机二级证书快递号,计算机二级office查询成绩后的注意事项证书直邮申请17到到23号...
  17. JAVA语言异常_Java语言中常用异常类EoFException是用来处理( )异常的类_学小易找答案...
  18. 计算机新建里没有word,电脑新建中没有word和excel怎么回事
  19. 绘声绘影X4 个人MV制作
  20. 泛读论文:Person-reID 行人重识别合集

热门文章

  1. php ppt转视频教程,如何制作ppt转换视频新手教程操作指南
  2. Java的Io模型你了解多少?北大青鸟java培训课程
  3. 哈理工计算机学院学生会技术部,某大学学生会网络技术部规章制度(网友投稿)...
  4. itext7 给PDF增加表单域并设置值
  5. React之生命周期-forceUpdate
  6. java parcelable转json字符串,json 字符串转parcelable
  7. python下调用淘宝top接口例子
  8. 计算机毕业设计SSM道路桥梁工程知识文库系统【附源码数据库】
  9. GDUT - 专题学习1 A - Red and Black
  10. ppt模板如何制作出科技感?