Nginx负载WebSocket

news/2024/7/10 2:24:45 标签: nginx, websocket, 负载均衡

一、安装Nginx

  • window10安装nginx【1.8.1版本】
  • CentOS7 安装 nginx

选择一个安装即可。


二、Nginx配置文件修改

map $http_upgrade $connection_upgrade {
	default upgrade;
	'' close;
}

upstream xdx97.com {
	server 127.0.0.1:1997;
	server 127.0.0.1:1998;
}

server {
	listen 8089;
	location / {
		proxy_pass http://xdx97.com;
		proxy_http_version 1.1;
		proxy_set_header Upgrade $http_upgrade;
		proxy_set_header Connection $connection_upgrade;
	}
}

完整的nginx.conf配置

worker_processes  1;

events {
    worker_connections  1024;
}


http {
    include       mime.types;
    default_type  application/octet-stream;

    

    sendfile        on;
   
    keepalive_timeout  65;

    server {
        listen       9876;
        server_name  localhost;

        location / {
            root   html;
            index  index.html index.htm;
        }


        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }
	map $http_upgrade $connection_upgrade {
		default upgrade;
		'' close;
	}

	upstream xdx97.com {
		server 127.0.0.1:1997;
		server 127.0.0.1:1998;
	}

	server {
		listen 8089;
		location / {
			proxy_pass http://xdx97.com;
			proxy_http_version 1.1;
			proxy_set_header Upgrade $http_upgrade;
			proxy_set_header Connection $connection_upgrade;
		}
	}
}


三、测试

3-1、开启你本地的两个服务

3-2、使用下面这个在线工具进行测试

http://www.easyswoole.com/wstool.html

3-3、测试结果如下

在这里插入图片描述


四、其它

nginx60s_115">4-1、nginx默认60s没有消息传输,就会中断连接。

解决办法一: 把这个60s,设置的大一些。

proxy_read_timeout 600s; 

具体位置

server {
	listen 8089;
	location / {
		proxy_pass http://xdx97.com;
		proxy_http_version 1.1;
		proxy_set_header Upgrade $http_upgrade;
		proxy_set_header Connection $connection_upgrade;
		proxy_read_timeout 600s; 
	}
}

解决办法二: 前端写一个定时方法,定时去请求建立心跳连接。


4-2、Nginx实现负载均衡Linux版本(六种负载策略)

https://www.xdx97.com/article/793503147019468800



参考文章:

https://blog.csdn.net/thbsp/article/details/80377480

https://www.cnblogs.com/interdrp/p/12148200.html


http://www.niftyadmin.cn/n/774918.html

相关文章

RocketMQ单机版详解,事务消息、顺序消息、转换消息、可回复消息等

文章目录一、说明1-1、安装和快速测试1-2、下面的代码使用的版本1-3、相关文档二、RocketMQ组件2-1、封装RocketMQTemplate2-2、生产者(Producer)2-3、消费者(consumer)2-3-1、push消费2-3-1-1、获取不需要返回值的消息2-3-1-2、获…

微信公众号接入自己的客服系统,自定义客服系统

微信公众号客服功能对接(微信自己的客服系统) 文章目录一、前提1-1、接收对方的消息1-2、发送消息给对方1-3、消息推送机制二、直接后台(单个服务)2-1、业务图三、直接后台(多个服务)3-1、业务图四、转接后…

Idea插件,MyBatis Log Plugin,自动生成完整的sql

我们在使用MyBatis的时候,打印出来的sql都是sql本体和参数分离,一两个参数倒也还好,参数多了复制起来就很麻烦了,使用插件MyBatis Log Plugin 可以完美解决这个问题。 重启IDEA后的操作如下:

超好用的Java反编译工具jd-gui【Java反编译工具】

有时候我们需要对已经打包好的jar包进行查看,这里推荐一个好用的工具jd-gui,无需安装,打开后直接把jar包拖动进去即可。 效果演示 关注微信公众号回复:jd-gui

你真的懂hashCode和equals吗???

前言 今天还在感概说,可能三年后我的简历和刚毕业那会没啥区别,因为现在已经毕业快一年了,上次重写简历除多了两个项目经验外没啥区别,而简历上面的技术我还需要好久才能掌握。 一、关于hashCode和equals我们知道下面几点 hashC…

MySql分表设计,Java分表设计

文章目录一、前言1-1、什么时候需要分表呢?1-2、分表的规则是什么呢?1-2-1、分表前后1-2-2、其它二、举例场景三、实现分表功能3-1、数据的增删改3-2、数据的查询3-3、自动创建表3-4、其它一、前言 1-1、什么时候需要分表呢? 这个其实就很简…

MySql关键字GROUP_CONCAT,组合连接查询

一、 试着想一下如果有这样一个需求应该怎么去做: 有一张学生表,和一张分数表。要查出每个学生姓名和分数,分数以逗号隔开 eg:张三 80,90,100 这个需求很简单,有很多种办法来解决,最简单的是我们可以先查询学生&#x…

MySql分组查询规则

文章目录一、问题二、结论证明实验一实验二一、问题 思考一下假如你有一个这样的需求 有一张账单表(bill_detail),一张开票表(open_invoice) 每一个用户有三种费用类型,分别是水费、污水费、违约金。&…