Nginx的socket转发端口如何配置

这篇文章主要讲解了“Nginx的socket转发端口如何配置”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Nginx的socket转发端口如何配置”吧!

专注于为中小企业提供网站设计、成都网站设计服务,电脑端+手机端+微信端的三站合一,更高效的管理,为中小企业汉阴免费做网站提供优质的服务。我们立足成都,凝聚了一批互联网行业人才,有力地推动了上千多家企业的稳健成长,帮助中小企业通过网站建设实现规模扩充和转变。

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的socket转发端口如何配置”的内容了,经过本文的学习后,相信大家对Nginx的socket转发端口如何配置这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是创新互联,小编将为大家推送更多相关知识点的文章,欢迎关注!


网站栏目:Nginx的socket转发端口如何配置
URL标题:http://pwwzsj.com/article/psdhgo.html