Nginx的socket转发端口如何配置
发布时间 - 2023-05-24 00:00:00 点击率:次nginx 转发 socket 端口常见场景:在线学习应用,在常规功能之外,增加一个聊天室功能,后端选择 swoole 提供服务提供者,同时不想前端直接 ip:port 方式链接到服务,需要使用 nginx 进行转发。
常规情况,我们可以在用户页面,直接建立 socket 链接,但这样的操作会暴露端口,带来一定的安全隐患,使用 nginx 进行转发,可以隐藏端口。额外的问题就是一些 header 参数也需要在转发过程中带给 socket 服务提供者,其他只需要 nginx 处理一下从常规协议转换到 websocket 就可以。
其中,"upgrade" 是 逐跳(hop-by-hop) 头,无法从客户端转发到代理服务器,通过转发代理,客户端可以使用 connect 方法来规避此问题。但是,这不适用于反向代理,因为客户端不知道任何代理服务器,并且需要在代理服务器上进行特殊处理。同时逐跳头包含 "upgrade" 和 "connection" 都无法传递,则需要在转换为 websocket 的时候带上这两个参数:例如:
location /chat/ {
proxy_pass http://backend;
proxy_http_version 1.1;
proxy_set_header upgrade $http_upgrade;
proxy_set_header connection "upgrade";
}进阶:让转发到代理服务器的 "connection" 头字段的值,取决于客户端请求头的 "upgrade" 字段值。例如:
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;
}
}注意:示例中的 http://backend 为一组负载均衡的服务器,只有单台服务器的,可以写成 proxy_pass http://127.0.0.1:9501; 这样的。此外,默认情况下,在 60 秒内未传送任何数据的链接将被关闭,时间
可以使用 proxy_read_timeout 指令来延长。或者代理服务器可以配置定时发送 ping 帧来重置超时及检查链接是否可用。
# nginx
# swoole
# http
# websocket
# 负载均衡
# 代理服务器
# 客户端
# 要在
# 可以使用
# 进阶
# 适用于
# 我们可以
# 这两个
# 将被
# 只需要
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251811 】
【
AI营销90571 】
相关推荐:
企业网站制作这些问题要关注
Chrome浏览器标签页分组怎么用_谷歌浏览器整理标签页技巧【效率】
电商网站制作多少钱一个,电子商务公司的网站制作费用计入什么科目?
lovemo网页版地址 lovemo官网手机登录
如何快速登录WAP自助建站平台?
Laravel用户密码怎么加密_Laravel Hash门面使用教程
javascript事件捕获机制【深入分析IE和DOM中的事件模型】
中山网站制作网页,中山新生登记系统登记流程?
Laravel怎么实现一对多关联查询_Laravel Eloquent模型关系定义与预加载【实战】
QQ浏览器网页版登录入口 个人中心在线进入
如何在企业微信快速生成手机电脑官网?
中山网站推广排名,中山信息港登录入口?
如何利用DOS批处理实现定时关机操作详解
Laravel API资源类怎么用_Laravel API Resource数据转换
成都网站制作公司哪家好,四川省职工服务网是做什么用?
Laravel如何使用Seeder填充数据_Laravel模型工厂Factory批量生成测试数据【方法】
郑州企业网站制作公司,郑州招聘网站有哪些?
JavaScript Ajax实现异步通信
如何在腾讯云服务器快速搭建个人网站?
实现点击下箭头变上箭头来回切换的两种方法【推荐】
rsync同步时出现rsync: failed to set times on “xxxx”: Operation not permitted
网站制作免费,什么网站能看正片电影?
如何用低价快速搭建高质量网站?
JS去除重复并统计数量的实现方法
PHP的CURL方法curl_setopt()函数案例介绍(抓取网页,POST数据)
Laravel如何实现多语言支持_Laravel本地化与国际化(i18n)配置教程
如何在阿里云香港服务器快速搭建网站?
深圳网站制作设计招聘,关于服装设计的流行趋势,哪里的资料比较全面?
如何快速查询网址的建站时间与历史轨迹?
HTML5段落标签p和br怎么选_文本排版常用标签对比【解答】
javascript中的数组方法有哪些_如何利用数组方法简化数据处理
Laravel DB事务怎么使用_Laravel数据库事务回滚操作
如何在腾讯云服务器上快速搭建个人网站?
如何用好域名打造高点击率的自主建站?
iOS验证手机号的正则表达式
Laravel怎么使用Markdown渲染文档_Laravel将Markdown内容转HTML页面展示【实战】
如何快速生成高效建站系统源代码?
Win11应用商店下载慢怎么办 Win11更改DNS提速下载【修复】
Python图片处理进阶教程_Pillow滤镜与图像增强
网站制作怎么样才能赚钱,用自己的电脑做服务器架设网站有什么利弊,能赚钱吗?
如何在VPS电脑上快速搭建网站?
javascript基于原型链的继承及call和apply函数用法分析
如何快速上传建站程序避免常见错误?
Linux虚拟化技术教程_KVMQEMU虚拟机安装与调优
香港服务器租用每月最低只需15元?
大连企业网站制作公司,大连2025企业社保缴费网上缴费流程?
使用豆包 AI 辅助进行简单网页 HTML 结构设计
Laravel怎么实现前端Toast弹窗提示_Laravel Session闪存数据Flash传递给前端【方法】
Laravel Sail是什么_基于Docker的Laravel本地开发环境Sail入门
怎么用AI帮你为初创公司进行市场定位分析?

