前言

下面是配置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. centos 定时任务

    想法 看见一个别的项目,每天扒bing的背景,然后 生成个列表,然后数据就一天天的增加,创意非常好 有时间研究下 关键字 centos 定时任务 基于centos7系统定时任务创建 https://b ...

  2. GitLab (v16.x) 简述及安装部署

    GitLab 介绍 GitLab 的历史 GitLab 最初是一个完全免费的开源软件,根据 MIT 许可证分发.2013 年 7 月,它被分为两个不同的版本 - GitLab CE(社区版)和 Git ...

  3. python元组(tuple)循环遍历实例分析

    一 概念: 元组是有序且不可更改的集合.在 Python 中,元组是用圆括号编写的. 二 使用方法: 1  基本创建: thistuple = ("apple", "ba ...

  4. day04-应用线程03

    JavaGUI-坦克大战04 7.线程的应用03 7.3坦克大战4.0版 7.3.4功能3:敌方坦克自由移动 功能3:让敌人的坦克也可以自由随机地上下左右移动 思路: 因为要求敌人的坦克自由移动,因此 ...

  5. 使用Wireshark在RTP流中提取中264数据(针对udp)(转)

    调试rtsp收发流时,经常会需要抓包以确认是网络问题还是程序问题还是其它问题.通过tcpdump或者wireshark抓到的包通常是rtp流,保存为.pcap格式文件后中,可通过wireshark进行 ...

  6. 更新|3DCAT实时云渲染 v2.1.2版本全新发布

    3DCAT实时渲染云在近期发布了新的v2.1.2的版本,让我们来看下做了哪些更新. 1. 整体UI的变更 目前的UI风格更加美观,区分开了3DCAT 应用控制中心和个人信息管理中心. 3DCAT 应用 ...

  7. docker部署Prometheus

    1.安装运行Prometheus 下面介绍如何使用Prometheus.Grafana.CAdvisor.node-exporter.mysqld-exporter对本机服务器性能.Docker容器. ...

  8. KingbaseES V8R6集群运维案例之---securecmd连接需要密码问题

    KingbaseES V8R6集群运维案例之---securecmd连接需要密码问题 案例说明: 在KingbaseES V8R6集群可以使用securecmdd代替sshd实现集群主机节点间的通讯, ...

  9. UE4中的C++编程简介

    对官方文档的学习链接 利用UE创建一个C++基类 在编辑器中可以选择父类,根据这个父类我们可以创建一个基类用于后续的蓝图类制作. 以Actor父类为例创建基类,其头文件会包含一个构造函数,一个Tick ...

  10. NOI Linux 2.0 下载安装和使用

    下载安装部分 NOI Linux 2.0发布,将于9月1日起正式启用! 首先来到 NOI 的官网,下载 .iso 格式的盘符. 然后下载任意一个虚拟机软件,这里以 VirtualBox 为例. Dow ...