Nginx实现websocket负载均衡

Nginx 与WebSocket Load Balancing:高效分配实时连接 通过本文的学习,你应该已经掌握了如何使用Nginx进行WebSocket负载均衡。Nginx作为一个强大且灵活的工具,可以帮助你轻松实现负载均衡、安全性、监控和日志记录等功能。结合实际应用场景,不断优化和完善你的架构,最终实现高效的实时通信系统。希望这篇文章对你有所帮助!如果你有任何问题或建议,欢迎随时提问和交流。 阅读详情

目录

Nginx实现websocket负载均衡... 1

软件版本:... 1

实验过程:... 1

Nginx参考代码(nginx.conf):1

参考资料:... 3

注意事项:... 3

 

Nginx实现websocket负载均衡

软件版本:

实验平台:windows

Nginx版本:nginx-1.12.2

Tomcat: apache-tomcat-8.0.47-windows-x64

 

实验过程:

我在公司的ip:192.168.3.59的电脑的8080端口部署了Nginx服务器

并将其收到的请求以负载均衡的方式分发到以下两台服务器

  server 192.168.3.59:8081 

  server 192.168.3.18:8080 

经过试验可以看到两台服务器可以负载均衡处理客户端传来的链接请求。

 

Nginx参考代码(nginx.conf):

events {

   worker_connections  1024;

}

 

 

http {

   include       mime.types;

   default_type application/octet-stream;

 

   #log_format  main  '$remote_addr - $remote_user [$time_local]"$request" '

   #                  '$status$body_bytes_sent "$http_referer" '

   #                 '"$http_user_agent" "$http_x_forwarded_for"';

 

   #access_log  logs/access.log  main;

 

   sendfile        on;

   #tcp_nopush     on;

 

   #keepalive_timeout  0;

   keepalive_timeout  65;

 

   #gzip  on;

 

   server {

       listen       80;

       server_name  localhost;

 

       #charset koi8-r;

 

       #access_log logs/host.access.log  main;

 

       location / {

           root   html;

           index  index.html index.htm;

       }

 

 

 

       #error_page  404              /404.html;

 

       # redirect server error pages to the static page /50x.html

       #

       error_page   500 502 503 504  /50x.html;

       location = /50x.html {

           root   html;

       }

 

       # proxy the PHP scripts to Apache listening on 127.0.0.1:80

       #

       #location ~ \.php$ {

       #    proxy_pass   http://127.0.0.1;

       #}

 

       # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000

       #

       #location ~ \.php$ {

        #   root           html;

       #    fastcgi_pass   127.0.0.1:9000;

       #    fastcgi_index  index.php;

       #    fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;

       #    include        fastcgi_params;

       #}

 

       # deny access to .htaccess files, if Apache's document root

       # concurs with nginx's one

       #

       #location ~ /\.ht {

       #    deny  all;

       #}

    }

 

 

 

   upstream tomcatserver1 {

   server 192.168.3.59:8081 weight=1;

    server 192.168.3.18:8080  weight=1;

    }

 

   server {

       listen       8080;

       server_name  192.168.3.59;

 

       #charset koi8-r;

 

       #access_log logs/host.access.log  main;

 

       location / {

           proxy_pass http://tomcatserver1;

           index  index.html index.htm;

           proxy_http_version 1.1;

           proxy_set_header Upgrade $http_upgrade;

           proxy_set_header Connection "upgrade";

       }

    }

}

 

参考资料:

【1】https://www.bilibili.com/video/av14413785/index_4.html

【2】http://www.jb51.net/article/112183.htm

【3】http://blog.youkuaiyun.com/xluren/article/details/16951247

注意事项:

1.      注意nginx的代码编写时对于空格字符使用有严格的限制。

2.      由于nginx对windows支持并不好,结束nginx服务请使用命令行,否则会出现丢失文件的错误。

ESP32蓝牙配网实战:微信小程序中的blufi协议实现与优化 本文详细介绍了在微信小程序中实现ESP32蓝牙配网的实战经验,重点解析了blufi协议的应用与优化。内容涵盖从开发环境配置、协议帧格式解析,到小程序端蓝牙通信、数据转换的核心步骤,并提供了配网状态机设计、错误处理及性能调优等进阶方案,旨在帮助开发者高效、稳定地完成物联网设备配网功能开发。 阅读详情

相关推荐

拥有AI助手便能解放双手?——抖音直播脚本的生成

科技改变生活,AI助手帮你完成抖音创作!

Scientist_的博客 2354

nginx 配置websocket负载均衡

nginx会话保持 1.IP_hash 在http下增加如下配置,确保nginx能处理正常的http请求,由于一般情况下开发人员在开发过程中会将websocket的会话状态session通过集合进行管理存储于内存中,则在多节点分布式的情况下,可使用IP_HASH负载策略进行负载解决session不一致的问题。 ip_hash使用源地址哈希算法,将同一客户端的请求总是发...

wanchaopeng的博客 2607

在Matlab中开发AutoSAR模型的流程(自下而上)

前面介绍了AutoSAR软件组件开发的两种方式,其中自下向上的方式,是从模型出发,流程如下。

小胡同学的工程师学习之路 5367

Nginx负载均衡与WebSocket集成:配置指南与实践

WebSocket是一种网络通信协议,它提供了一个全双工通信渠道,通过一个单一的长期连接允许服务器与客户端之间进行交互。首先,定义一个包含所有WebSocket后端服务器的upstreamhttp {# 可以根据需要添加更多后端服务器。

2402_85758936的博客 2272

Anaconda离线创建python环境

既然是离线创建python环境,就需要有一个已经创建好的python环境。所以我们有两台win10的机器,分别是A和B。两台机器都安装了anaconda。其中A可以连网,因此我们在A上创建好一个python2.7的环境py27,然后将py27移植(安装)到B上。B连不连网都无所谓。 一、机器上A上创建python2.7的环境py27 有两种方法: 方法1:使用Anaconda的图形界面。首先,点击Environments->Create,然后输入要创建的环境名称"py27",然后选择2.7,如图

FY_2018的博客 6787

避坑指南:企业微信IP白名单设置失败的5种常见原因及解决方案

本文深入解析企业微信API调用中IP白名单设置失败的5种常见原因,包括动态公网IP变更、代理服务器导致的IP失真等,并提供针对性的解决方案。特别针对可信IP配置问题,详细介绍了诊断方法和Java代码示例,帮助企业开发者快速解决访问限制问题,确保API调用安全稳定。

weixin_29280657的博客 621

Nginx搭建负载均衡,WebSocket流

WebSocket 协议与 HTTP 协议不同,但 WebSocket 握手与 HTTP 兼容,使用 HTTP 升级工具将连接从 HTTP 升级到 WebSocket。例如,WebSocket 应用程序可以使用标准 HTTP 端口 80 和 443,从而允许使用现有的防火墙规则。最重要的就是在反向代理的配置中增加了如下两行,然后 HTTP 升级到 WebSocket。背景:搭建了一个ws流的视频代理,一个代理支撑不住过多视频播放,所以Nginx搭建负载均衡监听端口分发到代理。

qq_46057218的博客 1131

PyTorch实战(20)——生成对抗网络(Generative Adversarial Network,GAN)

自生成对抗网络 (Generative Adversarial Network, GAN) 提出以来,一直是一个活跃的研究和开发领域。本节探索了 GAN 的基本概念,重点解析了其两大核心组件——生成器与判别器的架构设计,深入阐述了 GAN 模型的整体工作机制,并使用 PyTorch 从零开始实现了深度卷积生成对抗网络 (Deep Convolutional GAN, DCGAN)。

盼小辉丶的博客 3575

深入解析 Nginx 对 WebSocket 的负载均衡支持

WebSocket 是一种网络通信协议,旨在通过单个持久化的 TCP 连接,实现客户端与服务器之间的全双工、低延迟的双向数据传输。它在 Web 环境下的出现,解决了传统 HTTP 协议在实时通信上的局限性。在传统的 HTTP 请求-响应模式中,客户端发出请求,服务器处理请求并响应,这个过程是单向的且有延迟。如果客户端需要持续获取最新数据,通常需要通过轮询或长轮询技术来实现。然而,这样的做法效率低,延迟高,且对服务器造成了不必要的压力。

hello.reader 3117

YOLOv8训练流程-原理解析[目标检测理论篇]

本篇文章主要介绍了YOLOv8训练的流程,主要介绍了Task Aligned Assigner正负样本匹配策略以及YOLOv8的损失计算。

ice 4518

一文掌握 MongoDB 详细安装与配置(Windows / Linux / macOS 全平台)

本文详细介绍了MongoDB社区版7.0+在Windows、Linux和macOS三大操作系统上的完整安装、配置与安全加固流程。主要内容包括:各平台推荐安装方式(Windows使用MSI安装包、Linux通过官方仓库、macOS通过Homebrew)、基本配置参数说明、服务启动方法以及关键安全措施(如创建管理员用户和启用身份验证)。文章还提供了系统最低要求、下载地址、数据目录设置建议以及生产环境使用注意事项,适合开发、测试及生产环境部署参考。

数据知道的博客 6717

使用nginx实现websocket的负载均衡

使用nginx实现websocket的负载均衡 当web应用访问量过大时,我们就需要做负载均衡,将同一个域名的请求分散到不同的服务器上。nginx就可以做到。它可以按照轮询、ip哈希、URL哈希、权重等多种方式对后端服务器做负载均衡。但是分配到不同的机器上后,如果请求是有状态的,比如有些页面需要用户登录之后才能访问,我们就需要保证单个用户请求落在一台机器上或者实现多台机器之间的session共享...

thbsp的博客 3万+

使用Zed 实现测距

此代码基于官方代码基础上进行改写,主要是获取zed相机深度画面的深度值,为yolo测距打基础。Zed相机是由Stereolabs公司开发的一种先进的立体视觉相机。这种相机专为计算机视觉和机器学习应用而设计,能够提供高质量的3D捕捉和分析功能。: Zed相机配备有一对垂直排列的传感器,能够捕捉两个略有偏移的图像,从而模拟人的双眼视觉,实现深度感知。: 利用立体成像技术,Zed相机能够实时生成环境的3D模型,这对于机器人导航、增强现实(AR)和虚拟现实(VR)等应用至关重要。

weixin_45303602的博客 912

Nginx实现WebSocket负载均衡的技术方案

本文详细介绍了Nginx配置WebSocket负载均衡的实现方法。重点讲解了WebSocket协议特性、Nginx反向代理和负载均衡模块的核心配置,包括proxy_set_header关键参数设置和多种负载均衡策略选择。通过实际案例展示了如何配置多台WebSocket服务器的负载均衡,并提供了测试验证方法和性能优化建议。文章还扩展了SSL/TLS加密的wss协议配置和基于路径的多服务负载均衡场景,涵盖了生产环境中的典型应用需求。最后强调根据业务场景选择合适的负载均衡策略,并配合健康检查确保高可用性。

没事学AI的博客 1649

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

websocket nginx redis 集群负载均衡实现思路

Websocket nginx redis 负载均衡实现步骤 几台server 就在redis上建立几个队列,比如 queue172.16.0.190 queue172.16.0.191 queue172.16.0.192 queue172.16.0.193 queue172.16.0.194 queue172.16.0.195 每台server 上分别订阅上述1个对应的队列, ...

houzhanshanlinzhou的专栏 847

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

nginx反向代理实现websocket负载均衡

背景: 由于业务服务器在后台,没有公网来对外提供webSocket服务,所以就需要nginx 来实现反向代理。 解决方案: 解决的方法也是在nginx配置一个upstream,里面可以若干个节点信息,也可以是引入一个文件,这个文件包含的节点信息,这样可能更方便维护节点信息。 然后就是server进行请求转发到upstream。 本地配置一个虚拟域名www.xxx.com,然后修改nginx配置,想要wss的话,就给域名配置证书就行了,其他不变。 upstream websocket { #ip_ha

houxian1103的博客 1709

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

nginx 反向代理nodejs websocket,实现负载均衡

  1.要求安装nginx1.3以上版本,具体安装请查询各种文档   2.nginx配置 map $http_upgrade $connection_upgrade { default upgrade; '' close; } upstream nodesocket { server 127.0.0.1:10080 ...

李俊良 621

Solaris10 SPARC操作系统中使用Nginx+Tomcat实现负载均衡,并实现websocket代理(三)

3.验证上一节我们部署了负载均衡,这一节我们来进行负载均衡的验证。 分别启动每个tomcat和nginx。tomcat启动:bash-3.00# ./startup.shnginx启动:bash-3.00# ./nginx3.1 首先验证两个tomcat的每个服务是否正常运行对外访问方式:http://127.0.0.1:8080/nginxtest Tomcat1: http://12

ykp的专栏 2566

Solaris10 SPARC操作系统中使用Nginx+Tomcat实现负载均衡,并实现websocket代理(二)

2 实施步骤上一节我们简单介绍了负载均衡的知识,下面我们就来看看具体如何实现负载均衡。2.1 准备资料Nginx依赖很多其他的东西,因此我们需要提前准备好。2.1.1 Nginx软件首先是实现负载均衡的代理服务器nginx,下载的地址是: http://nginx.org/en/download.html下载的时候一定要区分好所下载的是windows版本的还是Linux/Unix版本的

ykp的专栏 1982

【Nginx】面试官问我Nginx如何配置WebSocket?我给他现场演示了一番!!(2)

给大家分享一些关于HTML的面试题,有需要的朋友可以戳这里免费领取,先到先得哦。家分享一些关于HTML的面试题,有需要的朋友可以戳这里免费领取,先到先得哦。**[外链图片转存中…(img-DM4x1yG7-1713613800875)][外链图片转存中…(img-AP87N7dK-1713613800875)]

2401_84092398的博客 637

Solaris10 SPARC操作系统中使用Nginx+Tomcat实现负载均衡,并实现websocket代理(一)

一.负载均衡的基本说明1.1为什么要使用NGINX通过这个图片我们可以看出来,Nginx的性能要明显好于Apache和Lighttpd,所以我们采用Nginx来进行负载均衡。那么我们该如何实现负载均衡呢?请看下面的架构图。1.2负载均衡的架构图通过这个架构图,我们可以知道我们是要通过一个nginx代理服务器+两个web服务器的形式来实现负载均衡。1.3环境说明 操作系统:Solaris 10 SPA

ykp的专栏 908

Nginx代理WebSocket方法

大家好,我是小姜。前一篇文章讲了一下什么是WebSocket协议,这里在回顾一下,并且聊一聊如何用nginx来代理WebSocket。WebSocket是HTML5下一种新的协议。它实现了浏览器与服务器全双工通信,能更好的节省服务器资源和带宽并达到实时通讯的目的。它与HTTP一样通过已建立的TCP连接来传输数据,但是它和HTTP最大不同是:❝1) WebSocket是一种双向通信协议。在建立连接后,WebSocket服务器端和客户端都能主动向对方发送或接收数据,就像Socket一样;2)WebSocket需

wanger5354的博客 1万+

Nginx之——配置WebSocket

Nginx配置WebSocket反向代理 问题描述 目前项目中需要使用到WebSocket来进行通讯,所以就写了个Nginx反向代理WebSocket的配置文件. 很简单,但是很有效,能够横向扩展WebSocket服务端 先直接展示配置文件,如下(使用的话直接复制,然后改改ip和port即可) map $http_upgrade $connection_upgrade { defau...

冰河的专栏 8005

nginx做为websocket反向代理和负载均衡器

这里先简单说下websocket与http的区别,websocket是长连接,而且客户端和服务端都可以主动给对方发送数据;而http是短连接的(当然可以是长连接http 1.1),但是只能是客户端主动发起请求,服务端做出响应。 在实际的生产环境中,一般要求多个websocket服务器必须具备高可用和高性能,这样webcoket就需要一个负载均衡层,本着有现有的轮子就使用现有轮子的原则,这里选择使用nginx做为websocket的反向代理和负载均衡器。虽然websocket和http协议不同,但是webs

qq_41681715的博客 867

WebSocket负载均衡

这一期我们来说一下WebSocket负载均衡的问题   我们知道负载均衡在IT中是个很重要的概念,尤其是在互联网行业中,很多的产品都是web形式,提供基于http请求的服务。而单个服务器的处理能力是有限的,往往我们会用到集群。集群环境下,http请求是根据配置的策略来分发到指定的服务节点上的,一般在各个机器的性能都一致情况下,请求分发到每个结点的机率都一样。   这里 我介绍几种不同的方法,有...

jonychen1的博客 2834

使用nginx作为websocket的proxy server

WebSocketWebSocket协议为创建客户端和服务器端需要实时双向通讯的webapp提供了一个选择。其为HTML5的一部分,WebSocket相较于原来开发这类app的方法来说,其能使开发更加地简单。大部分现在的浏览器都支持WebSocket,比如Firefox,IE,Chrome,Safari,Opera,并且越来越多的服务器框架现在也同样支持WebSocket。在实际的生产环境中,要求多

周翔的专栏 5万+
上一篇: 剑指Offer(第二版)面试题48:最长不含重复字符的子字符串
下一篇: 剑指Offer(第二版)面试题60:n个骰子的点数
xy_cpp
博客等级 码龄10年 119粉丝 84原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值