前言

下面是配置nginx websocket 的代码。

# HTTPS server
map $http_upgrade $connection_upgrade { default upgrade;
'' close;
} upstream websocket {
server localhost:30000; #本地websocket反向代理地址
}
server {
listen 443 ssl;
server_name www.51kanyisheng.com; ssl_certificate D://ssl//wwwnginx//value.crt;
ssl_certificate_key D://ssl//wwwnginx//cert.key; ssl_session_cache shared:SSL:1m;
ssl_session_timeout 5m; ssl_protocols SSLv3 SSLv2 TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP; location / {
#root html;
#index index.html index.htm; proxy_pass https://www.xxxx:10000;
}
# 监听app
location /websocket {
proxy_pass http://websocket;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $connection_upgrade;
#proxy_set_header Host $host;
} }

正文

为什么这么配置呢?

看一下如何建立websocket 配置:

首先浏览器会和我们沟通发布:

GET /webfin/websocket/ HTTP/1.1
Host: localhost
Upgrade: websocket
Connection: Upgrade
Sec-WebSocket-Key: xqBt3ImNzJbYqRINxEFlkg==
Origin: http://localhost:8080
Sec-WebSocket-Version: 13

然后我们会一个:

HTTP/1.1 101 Switching Protocols
Upgrade: websocket
Connection: Upgrade
Sec-WebSocket-Accept: K7DJLdLooIwIG/MOpvWFB3y3FE8=

这其实是http协议,在websocket 连接建立之前我们需要去沟通切换协议。

$http_upgrade 客户端请求中$http_upgrade 的值,来构造改变$connection_upgrade的值,即根据变量$http_upgrade的值创建新的变量$connection_upgrade

map 的详解是:

https://blog.51cto.com/tchuairen/2175525?source=dra

在websocket 代理过程中,过一段时间会出现断开的现象,这是因为nginx 代理默认了一段时间没有响应就会断开。

我们需要设置一个心跳包,合理的调整nginx 的断开时间。

nginx 如何代理websocket的更多相关文章

  1. Nginx反向代理websocket配置实例

    最近有一个需求,就是需要使用 nginx 反向代理 websocket,经过查找一番资料,目前已经测试通过,本文只做一个记录 复制代码 代码如下: 注: 看官方文档说 Nginx 在 1.3 以后的版 ...

  2. NGINX: 反向代理 websocket

    参考: [ Using multiple nodes ] [ Nginx 官网 WebSocket proxying ] 关于 websocket 的介绍可以看阮大大的这篇 [ WebSocket 教 ...

  3. nginx之代理websocket

    nginx代理websocket:NGINX通过允许一个在客户端和后端服务器之间建立的隧道来支持WebSocket.为了NGINX发送来至于客户端Upgrade请求到后端服务器,Upgrade和Con ...

  4. Nginx反向代理WebSocket(WSS)

    1. WebSocket协议 WebSocket 协议提供了一种创建支持客户端和服务端实时双向通信Web应用程序的方法.作为HTML5规范的一部分,WebSockets简化了开发Web实时通信程序的难 ...

  5. 配置 Nginx 反向代理 WebSocket

    用Nginx给网站做反向代理和负载均衡是广泛使用的一种Web服务器部署技术.不仅能够保证后端服务器的隐蔽性,还可以提高网站部署灵活性. 今天我们来讲一下,如何用Nginx给WebSocket服务器实现 ...

  6. Nginx反向代理websocket配置实例(官网)

    https://www.nginx.com/blog/websocket-nginx/ Blog Tech Rick Nelson of NGINX, Inc.   May 16, 2014   NG ...

  7. 配置Nginx反向代理WebSocket,以代理noVNC为例

    什么是Nginx Nginx (engine x) 是一个高性能的HTTP和反向代理服务器,也是一个IMAP/POP3/SMTP服务器. Nginx是一款轻量级的Web 服务器/反向代理服务器及电子邮 ...

  8. nginx 反向代理 (websocket)后报 - 400 bad request

    nginx的反向代理. nginx.conf中的配置如下: location / {        proxy_http_version                1.1;         pro ...

  9. Nginx反向代理WebSocket

    http { upstream websocket { server 192.168.1.1:8010; } server { listen 8020; location / { proxy_pass ...

  10. Nginx实战之反向代理WebSocket的配置实例

    http://www.jb51.net/article/112183.htm 最近在工作中遇到一个需求,需要使用 nginx 反向代理websocket,经过查找一番资料,目前已经测试通过,所以这篇文 ...

随机推荐

  1. 提升地理空间分析效率,火山引擎ByteHouse上线GIS能力

    更多技术交流.求职机会,欢迎关注字节跳动数据平台微信公众号,回复[1]进入官方交流群 在数字化时代,地理空间分析(Geospatial Analytics)成为辅助企业市场策略洞察的重要手段.无论是广 ...

  2. 用户不在 sudoers 文件中。此事将被报告

    在终端,进入root模式 vim /etc/sudoers 在    sudo (ALL:ALL) ALL下 添加 用户名 (ALL:ALL) ALL

  3. ADS1299开发调试总结之寄存器使用说明简析

    一 前记 在生物生理信号测量领域,ads12xx系列是一个无法绕过去的存在.笔者最近几个项目围绕着动物生理信号测量来做.所以用ads12xx比较多一些. 中间遇到了一些问题,这里做一个总结吧. 二 寄 ...

  4. Python isinstance() 函数含义及用法解析

    描述 isinstance() 函数来判断一个对象是否是一个已知的类型,类似 type(). isinstance() 与 type() 区别: type() 不会认为子类是一种父类类型,不考虑继承关 ...

  5. 【atcoder begin 302】【e题 Isolation 】JAVA的快速输入输出

    import java.io.*; import java.util.HashSet; import java.util.Set; /** * @author fishcanfly */ public ...

  6. 云游长江大桥,3DCAT实时云渲染助力打造沉浸化数字文旅平台

    南京长江大桥是中国第一座自主设计建造的双层公路铁路桥,也是世界上最早的双层公路铁路桥之一.它不仅是一座桥梁,更是一座历史文化的见证者和传承者.它见证了中国人民的智慧和奋斗,承载了中国社会的变迁和发展. ...

  7. 专访惠众科技|元宇宙应用如何借助3DCAT实时云渲染实现流畅大并发呈现?

    当前互联网流量红利已经逐渐消失,营销同质化愈发严重.在这样的背景下,催生了以元宇宙为焦点的虚拟产业经济.元宇宙在各行各业中以不同形式快速萌生.成长,呈现出多元化的应用场景.尤其是众多品牌,将元宇宙视为 ...

  8. java方法的内存及练习

    方法的内存 一.方法调用的基本内存原理: Java内存分配 栈: 方法运行时使用的内存方法进栈运行,运行完毕就出栈 堆: newl出来的,都在堆内存中开辟了一个小空间 方法区: 存储可以运行的clas ...

  9. Python编程规范+最佳实践

    前言 Python之禅是影响Python编程语言设计的19条原则,也是Python编码规范的核心理念. 优美胜于丑陋(Python 以编写优美的代码为目标) 明了胜于晦涩(优美的代码应当是明了的,命名 ...

  10. SQLI-LABS(Less-9、10)

    Less-9(GET-Blind-Time based-Single Quotes) 打开Less-9页面,可以看到页面中间有一句Please input the ID as parameter wi ...