nginx代理websocket配置
nginx正常只能代理http请求,如果想实现代理websocket的需求,需在请求中加入"Upgrade"字段,使请求从http升级为websocket。
配置如下:
http { map $http_upgrade $connection_upgrade { default upgrade; '' close; } server { ... location /chat/ { proxy_pass http://backend; proxy_http_version 1.1; #以下配置添加代理头部: proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection $connection_upgrade; } }
实验案例:
配置websockeet服务器,客户端通过代理连接服务器端。环境如下:
websocket服务端:192.168.1.110:8010
nginx :192.168.1.131:8081
1:利用nodejs实现一个websocket服务端,监听8010端口,等待websocket链接。
安装nodejs与npm,并安装ws模块。(这里通过官网程序包实现)
[root@192_168_1_110 ~]# tar -zxvf node-v6.2.0-linux-x64.tar.gz [root@192_168_1_110 ~]# ln -s /root/node-v6.2.0-linux-x64/bin/node /usr/local/bin/node [root@192_168_1_110 ~]# ln -s /root/node-v6.2.0-linux-x64/bin/node /usr/local/bin/node [root@192_168_1_110 ~]# npm install -g ws [root@192_168_1_110 ~]# npm install -g wscat
编写websocket服务监听程序:
[root@192_168_1_110 ~]# vim server.js console.log("Server started"); var Msg = ''; var WebSocketServer = require('ws').Server , wss = new WebSocketServer({port: 8010}); wss.on('connection', function(ws) { ws.on('message', function(message) { console.log('Received from client: %s', message); ws.send('Server received from client: ' + message); }); });
启动websocket服务端:
[root@192_168_1_110 ~]# node server.js Server started
重新开启一个终端,使用wscat程序测试程序连接:
[root@192_168_1_110 ~]# /root/node-v6.2.0-linux-x64/lib/node_modules/wscat/bin/wscat --connect ws://192.168.1.110:8010 connected (press CTRL+C to quit) > This is a websocket test... < Server received from client: This is a websocket test... >
查看服务端:
[root@192_168_1_110 ~]#node server.js Server started Received from client: This is a websocket test... ----从客户端接收到的信息
至此,websocket环境搭建完成。
2:配置nginx,代理110上的websocket链接。
[root@192_168_1_131 ~]# vim /opt/conf/nginx/nginx.conf ...... http { ...... map $http_upgrade $connection_upgrade { default upgrade; '' close; } ....... include vhost/*.conf; [root@192_168_1_131 ~]# vim /opt/conf/nginx/vhost/nodejs.conf upstream nodejs{ server 192.168.1.110:8010; } server { listen 8010; access_log /opt/logs/nginx/nodejs.log main; location / { proxy_pass http://nodejs; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection $connection_upgrade; } }
重新加载nginx配置:
[root@192_168_1_131 ~]# service nginx reload
这样配置过后,在nginx服务器上访问8010端口的请求,将会全部发送到后端192.168.1.110的8081端口上。
3:验证websocket请求代理:(把ws地址指向192.168.1.131:8010)
[root@192_168_1_110 ~]# /root/node-v6.2.0-linux-x64/lib/node_modules/wscat/bin/wscat --connect ws://192.168.1.131:8010 connected (press CTRL+C to quit) > This is a websocket test through nginx proxying... < Server received from client: This is a websocket test through nginx proxying... >
查看服务端:
[root@192_168_1_110 ~]#node server.js Server started Received from client: This is a websocket test... Received from client: This is a websocket test through nginx proxying...
可以看到通过代理,websocket也能正常接收到客户端的请求信息。

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
yum介绍及 基于yum服务器和客户端例子
因为都知道安装linux软件包rpm 很好用;但是不能解决软件包的个别依赖关系;所以安装数据包时出现依赖时、yum到可以解决这类数据包依赖关系;而且还能便于管理大量数据包更新的问题;它的特点 、可以同时配置多个资源库(Repository) ,简洁的配置文件(/etc/yum.conf) ,自动解决增加或删除rpm包时遇到的倚赖性问题,保持与RPM数据库的一致性这也是它的优势。因此解决数据包的依赖关系;也是基于服务器和客户端的一种应用。 首先呢 介绍一下YUM 的简单指令: yum info // 查询详细 yum install -y // 安装 (-y 数据包提示全部yes) yum remove -y // 删除 yum check-update //检查可更新的所有软件包 yum update //下载更新系统已安装的所有软件包 yum upgrade //大规模的版本升级,与yum update不同的是,连旧的淘汰的包也升级 yum install <packages&...
- 下一篇
部署Tomcat及其负载均衡
应用场景: 使用3台虚拟机 操作系统为redhat6.5 Nginx服务器s3 192.168.90.103 nginx-1.6.0.tar.gz Tomcat服务器s1 192.168.90.106 1.jdk-7u65-linux-x64.gz 2.apache-tomcat-7.0.54.tar.gz Tomcat服务器s2 192.168.90.107 1.jdk-7u65-linux-x64.gz 2.apache-tomcat-7.0.54.tar.gz 实施准备 启动后关闭防火墙 Service iptables stop Setenforce=0 --s01-s02-配置-- 安装JDK [root@redhat6two]#tarxzvfjdk-7u65-linux-x64.gz-C/opt/ mvjdk1.7.0_65//usr/local/java vi/etc/profile.d/java.sh//添加如下内容 source/etc/profile.d/java.sh java-version tarxzvfapache-tomcat-7....
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- Windows10,CentOS7,CentOS8安装MongoDB4.0.16
- CentOS7安装Docker,走上虚拟化容器引擎之路
- SpringBoot2初体验,简单认识spring boot2并且搭建基础工程
- CentOS关闭SELinux安全模块
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- CentOS7编译安装Gcc9.2.0,解决mysql等软件编译问题
- Docker安装Oracle12C,快速搭建Oracle学习环境
- SpringBoot2全家桶,快速入门学习开发网站教程
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- Eclipse初始化配置,告别卡顿、闪退、编译时间过长