使用nginx代理wss时 nginx proxy_pass指令为何是http协议?

发布于 2022-09-07 15:48:45 字数 396 浏览 58 评论 0

程序我已经测试通过
以下是nginx转发的配置
我有一点不理解

websocket服务我使用gatewayworker开了一个websocket服务

为何转发里是http

如果我直接访问这一地址,他又会提示错误

location /wss
{
    proxy_pass http://127.0.0.1:8585;
    proxy_http_version 1.1;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection "Upgrade";
    proxy_set_header X-Real-IP $remote_addr;
}

这是什么原理?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

末蓝 2022-09-14 15:48:45

Nginx本身是一个Server,当nginx作为一个代理服务器运行起来的后,用户A向nginx发起一个http请求实际上是一个基于tcp/ip的连接,因为http是tcp/ip协议簇的一个组合协议。当nginx收到请求后nginx会遍历server实例下的location模块数组,匹配到模块后读取模块配置,proxy_pass参数作为nginx的下一跳目标宿主机,两个主机之间需要建立基于传输的可信任连接,而刚好tcp/ip提供连接可靠(面向连接)基于传输的特性,因此nginx服务器和宿主机之间想要建立一个可靠连接基于tcp/ip进行是最佳选择,当nginx解析出proxy_pass参数的url之后与宿主机建立起一个基于http的可靠连接似乎顺理成章,nginx代理现在已经打通了两边的连接,那么可以开始运输资源了。

对风讲故事 2022-09-14 15:48:45

这个workerman与thinkPHP的实战项目视频不错,利用websocket协议实现了长连接,来做即时通讯,在线客服。地址 http://study.163.com/course/i...

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文