Nginx中怎么转发socket
发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,Nginx中怎么转发socket,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。Nginx转发socket配置前的准备工作
千家信息网最后更新 2026年11月01日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安全错误
数据库的锁怎样保障安全
互联网科技的
平安科技 互联网
齐家互联网科技有限公司
长亮科技互联网金融
多迪互联网科技有限公司
海南购全球互联网科技
互联网巨头投资的硬核科技
互联网科技公司的市场部门
银川新华互联网科技学校地址
互联网科技实习生岗位职责
欧洲十大科技互联网公司
佳云科技和互联网广告
崇明区互联网教育科技售后服务
呼和浩特新华互联网科技学院
北京市互联网新科技
卡尔迅互联网科技有限公司
科技互联网公司两年变化
科技互联网专业工作会议发言稿
恒生科技互联网指数十大成分股
互联网 科技节活动 微视频大赛
互联网科技
科技互联网龙头
科技互联网技术
中国 科技 互联网
随着互联网科技发展
杭州壁岐互联网科技有限公司
互联网保险科技创业
容联科技互联网电商
互联网科技品牌
恒生科技互联网指数十大成分股