Nginx中怎么转发socket
发表于:2025-02-04 作者:千家信息网编辑
千家信息网最后更新 2025年02月04日,Nginx中怎么转发socket,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。Nginx转发socket配置前的准备工作
千家信息网最后更新 2025年02月04日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-stream
websocket 请求头
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安全错误
数据库的锁怎样保障安全
济南直播软件开发公司如何选择
盛林互联网科技有限公司
把接口部署测试服务器
live视频数据库
村委会网络安全简报
数据库报错551
无锡至强服务器
龙创威网络技术有限公司
佛山支付软件开发方案
软件开发市场定位怎么写
alpha软件开发
深圳品质网络技术
河南刷脸付软件开发有限公司
上海宁丞互联网科技公司
宁波大应软件开发公司
阿里云方舟服务器管理器
消光2服务器在哪
jdbc访问数据库有
炒股软件开发技术
柏睿数据库系统
西安科技大学网络安全专业
网络安全培训领导高度重视
7月14b站服务器
oracle数据库文件附加
网络安全大检查工作总结
网络安全责任制落实要求
golang获取数据库图片
安徽数据库安全箱销售
服务器认证地址浙江大学
上海淇璇互联网科技有限公司