代理服务器获取流量的方式 Nginx代理的方式 Nginx如何支持WebSocket Nginx配置WebSocket方式

一、代理服务器获取流量的方式

客户端通常都会直接与Web服务器进行通信。那么当使用代理服务器作为客户端和服务器两者间一个“中介”时,代理服务器获取流量的方式有以下四种方式:

修改客户端:将客户端配置为使用代理服务器,那么客户端会直接将HTTP请求有意的发送到代理服务器上。

修改网络:网络基础设备可以通过若干种技术手段,在客户端不知情或没有参与的情况下,拦截网络流量并将其导入代理,这种代理称为拦截代理。

修改DNS命名空间:放在Web服务器之前的代理服务器,替代物,会直接假扮Web服务器的名字和IP地址

修改Web服务器:将Web服务器配置为向客户端发送一条HTTP重定向命令,将客户端的请求重定向到代理服务器上。

WebSocket与Nginx的小秘密

二、Nginx代理的方式

客户端和代理服务器建立连接并发送请求,代理服务器端接收客户端的请求后与具体的服务器建立连接,并把请求分发给服务器进行处理,最后再将服务器的响应结果反馈给客户端。

三、Nginx如何支持WebSocket

WebSocket 和HTTP虽然是不同协议,但是两者“握手”方式兼容。通过HTTP升级机制,使用HTTP的Upgrade和Connection协议头的方式可以将连接从HTTP升级为WebSocket。如下图所示

WebSocket与Nginx的小秘密

Http升级为WebSocket

因为WebSocket协议是一个hop-by-hop协议(此类头部字段只对单次转发有效。会因为转发给缓存/代理服务器而失效),为了让Nginx代理服务器可以将来自客户端的Upgrade请求发送到后端服务器,要求Upgrade和Connection的头信息必须被显式的设置。可以通过下文将要讲解的修改Nginx的配置文件方式解决此问题。

WebSocket与Nginx的小秘密

代理服务器分别与客户端和服务器建立连接,由于WebSocket连接是长时间保持的,所以代理服务器需要允许这些连接处于打开状态,而不是像对待HTTP使用的短连接那样将其关闭。

四、Nginx配置Websocket方式

通过修改nginx.conf配置,如下图所示

WebSocket与Nginx的小秘密

1.map是根据客户端请求中 $http_upgrade 的值来构造改变 $connection_upgrade 的值,即根据变量 $http_upgrade 的值和{} 里规则创建新的变量 $connection_upgrade并赋值。

2.HTTP的Upgrade协议头机制用于将连接从HTTP连接升级到WebSocket连接,Upgrade机制使用了Upgrade协议头和Connection协议头;为了让Nginx可以将来自客户端的Upgrade请求发送到后端服务器,Upgrade和Connection的头信息必须被显式的设置。如上图代码中第三个红圈。

五、总结

通过Http升级机制将Http升级为WebSocket。Nginx代理服务器通过修改配置的方式解决了WebSocket属于hop-by-hop协议的问题、并通过保持分别与客户端和服务端的连接一直处于打开状态从而实现WebSokcet的代理。

【凡本网注明来源非中国IDC圈的作品,均转载自其它媒体,目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。】

关注中国IDC圈官方微信:idc-quan 我们将定期推送IDC产业最新资讯

查看心情排行你看到此篇文章的感受是:


  • 支持

  • 高兴

  • 震惊

  • 愤怒

  • 无聊

  • 无奈

  • 谎言

  • 枪稿

  • 不解

  • 标题党
2019-08-09 17:40:43
整机柜服务器 什么是Nginx负载均衡高可用?
nginx作为负载均衡器,所有请求都到了nginx,可见nginx处于非常重点的位置,如果nginx服务器宕机后端web服务将无法提供服务,影响严重。 <详情>
2019-06-28 17:05:20
整机柜服务器 Nginx的作用详解,为什么在Web服务器中Nginx的比例越来越高?
没有听过Nginx?那么一定听过它的"同行"Apache吧!Nginx同Apache一样都是一种WEB服务器。基于REST架构风格,以统一资源描述符(Uniform Resources Identifier)URI或者统一资源 <详情>
2019-06-28 17:03:40
整机柜服务器 深入浅出反向代理服务器“Nginx”
Nginx ("engine x") 是一个高性能的HTTP和反向代理 服务器,特点是占有内存少,并发能力强,事实上nginx的 并发能力确实在同类型的网页服务器中表现较好,中国 大陆使用ngin <详情>
2019-06-05 14:19:41
整机柜服务器 中间件--Web Server--Nginx
事件驱动适合于IO密集型服务(Nginx),多进程或线程适合于CPU密集型服务(Apache),所以Nginx适合做反向代理,而非web服务器使用。 <详情>