Nginx中怎么转发socket
发表于:2025-12-02 作者:千家信息网编辑
千家信息网最后更新 2025年12月02日,Nginx中怎么转发socket,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。Nginx转发socket配置前的准备工作
千家信息网最后更新 2025年12月02日Nginx中怎么转发socket
Nginx中怎么转发socket,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。
Nginx转发socket
配置前的准备工作
Nginx转发socket需要stream模块的支持,编译时需要--with-stream,该模块在Nginx安装时是默认不安装的.同时Nginx版本应高等于于1.9;
通过反向代理,进行转发操作
注释: 官方提供的转发方式, 缺点,不能共用80端口,需要增开端口. stream模块和event模块是平级的.stream { # 添加socket转发的代理(上游服务器) upstream bss_num_socket { hash $remote_addr consistent; # 转发的目的地址和端口 server 130.51.11.33:19001 weight=5 max_fails=3 fail_timeout=30s; } # 提供转发的服务,即访问localhost:30001,会跳转至代理bss_num_socket指定的转发地址 server { listen 30001; proxy_connect_timeout 1s; proxy_timeout 3s; proxy_pass bss_num_socket; }}以上部分,参考官方文档.(一模一样的)另一种操作
该方式, 通过前端访问,一个专门的URI, Nginx通过URI来确认转发.优点,共用80端口.注意, location自然是要在server之内的, 与其他location同级location = /socket { # 转发到该地址 # 转发地址可以直接用IP:端口的形式如:http://127.0.0.1:9999 proxy_pass http://socket.byingcn.com/; # 转发时设置header头,在域名后添加端口号 proxy_set_header Host $host:9502; # 设置HTTP1.1 proxy_http_version 1.1; # 将客户端的Upgrade(作为websocket重要标识)请求转发(必须) proxy_set_header Upgrade $http_upgrade; # 将客户端的Connection(作为websocket重要标识)转发(非必须,但是最好转发一下) proxy_set_header Connection "upgrade"; # 转发IP地址 proxy_set_header X-Forwarded-For $remote_addr;}小结: 如果不太懂上面两个proxy_set_header的意义可以通过前台抓包看下, websocket请求头即可明白. proxy_set_header 作为设置请求头自然是不用说的. Upgrade和Connection资料比较少.应该记一下,通过查了不少资料和亲测实践. 此处设置的Upgrade和Connection 即为http请求头中的Upgrade和Connection. 而$http_upgrade系统变量则是,Nginx定义的用来获取请求头中的Upgrade的系统变量. 通过我将Upgrade $http_upgrade;项的设置改为Upgrade "websocket"(和请求头一样);完美运行. 基本上可以认为上面的说法是正确的. 总结一下, 基本上就是在转发时,要把转发的TCP/IP(socket)数据的头中的Upgrade和Connection给带过去(或设置的和前端一样)即可.注释: 该部分是放在普通的server模块中的; 给方式不用重开其他端口,只需指定某文件即可. 原理部分在于: 前端websocket部分请求到/socket文件. Nginx通过侦听,获取凡是请求该文件的操作,全部转发的http://socket.byingcn.com/; 但是该操作同时也需要Nginx安装 --with-streamwebsocket 请求头
GET /socket HTTP/1.1Host: test.virtualserver.comConnection: Upgrade Pragma: no-cacheCache-Control: no-cacheUpgrade: websocket Origin: chrome-extension://pfdhoblngboilpfeibdedpjgfnlcodooSec-WebSocket-Version: 13User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.101 Safari/537.36Accept-Encoding: gzip, deflateAccept-Language: zh-CN,zh;q=0.8,en;q=0.6Sec-WebSocket-Key: /mFCat+ePPs61TKUBZ5zHA==Sec-WebSocket-Extensions: permessage-deflate; client_max_window_bits注释: Connection字段和Upgrade字段在http权威指南中有详解(http请求头章);
看完上述内容是否对您有帮助呢?如果还想对相关知识有进一步的了解或阅读更多相关文章,请关注行业资讯频道,感谢您对的支持。
端口
模块
地址
部分
前端
文件
方式
注释
代理
重要
不用
变量
同时
字段
官方
客户
标识
端的
系统
自然
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
开服务器的好名字
一台服务器的多少根内存条
快速了解网络安全
党校网络安全宣传工作方案
计算机网络技术基础教材下载
php循环遍历查询数据库
对网络技术应用的感想
王者所有qq区服务器的名字
网络安全三同步细则
杰发科技软件开发
滴滴网络安全大赛
易语言数据库读取时间是
慕尼黑安全会议 网络安全
卫星互联网大立科技
山西pdu服务器电源哪里便宜
非营利性网络安全服务组织
南京软件开发怎么进国企
高速移动网络技术ppt
网络安全企业龙头股
鼎甲科技互联网安全
软件开发外包app报价
数据库技术及应用人民邮电出版社
wed软件开发
软件开发小美
动森服务器错误
南瑞网络安全监测装置多路由
数据库如何修改打印时间
网络技术及应用的读书报告
买软件开发技术基础书
浪潮服务器集成商