美文网首页
Nginx配置之WSS

Nginx配置之WSS

作者: OzanShareing | 来源:发表于2019-09-19 23:37 被阅读0次

    引言


    关于WebSocket,维基百科是这样介绍的:

    以前,很多网站为了实现实时推送技术,所用的技术都是轮询。轮询是在特定的时间间隔(如每1秒),由浏览器对服务器发出HTTP请求,然后由服务器返回最新的数据给客户端。这种传统的模式带来的缺点很明显,即浏览器需要不断的向服务器发出请求,然而HTTP请求包含较多的请求头信息,而其中真正有效的数据只是很小的一部分,显然这样会浪费很多的带宽等资源。在这种情况下,HTML5定义了WebSocket协议,能更好的节省服务器资源和带宽,并且能够更实时地进行通讯。
    WebSocket是一种在单个TCP连接上进行全双工通讯的协议,使得客户端和服务器之间的数据交换变得更加简单,允许服务端主动向客户端推送数据。在WebSocket API中,浏览器和服务器只需要完成一次握手,两者之间就可以创建持久性的连接,并进行双向数据传输

    WebSocket 协议在2008年诞生,2011年成为国际标准,现在几乎所有浏览器都已经支持了。它的最大特点就是,服务器可以主动向客户端推送信息,客户端也可以主动向服务器发送信息,是真正的双向平等对话,属于服务器推送技术的一种。

    WebSocket


    简单来说,WebSocket减少了客户端与服务器端建立连接的次数,减轻了服务器资源的开销,只需要完成一次HTTP握手。整个通讯过程是建立在一次连接/状态中,也就避免了HTTP的非状态性,服务端会一直与客户端保持连接,直到双方发起关闭请求,同时由原本的客户端主动询问,转换为服务器有信息的时候推送。所以,它能做实时通信(聊天室、直播间等),其他特点还包括:

    • 建立在 TCP 协议之上,服务器端的实现比较容易
    • HTTP 协议有着良好的兼容性。默认端口也是80443,并且握手阶段采用 HTTP 协议,因此握手时不容易屏蔽,能通过各种 HTTP 代理服务器
    • 数据格式比较轻量,性能开销小,通信高效
    • 可以发送文本,也可以发送二进制数据
    • 没有同源限制,客户端可以与任意服务器通信
    • 协议标识符是ws(如果加密,则为wss),服务器网址就是 URL

    wss


    故障一:

    现象描述: 在https协议下访问网站时,客户端浏览器控制面板异常信息:

    Mixed Content: The page at 'https://{域名+路径}' was loaded over HTTPS, but attempted to connect to the insecure WebSocket endpoint 'ws://{域名+路径}'. This request has been blocked; this endpoint must be available over WSS.
    

    这种情况,毫无疑问我们就需要使用 wss:// 安全协议了,需要将客户端浏览器获取的页面中webscoket的形式由ws:// 改为 wss://

    WebSocket可以使用 wswss 来作为统一资源标志符,类似于 HTTPHTTPS。其中 ,wss 表示在 TLS 之上的 WebSocket,相当于 HTTPS。默认情况下,WebSocketws 协议基于Http80 端口;当运行在TLS之上时,wss 协议默认是基于Http443 端口。说白了,wss 就是ws 基于 SSL 的安全传输,与 HTTPS 一样样的道理。所以,如果你的网站是 HTTPS 协议的,那你就不能使用 ws:// 了,浏览器会 block 掉连接,和 HTTPS 下不允许 HTTP 请求一样。

    相关文章

      网友评论

          本文标题:Nginx配置之WSS

          本文链接:https://www.haomeiwen.com/subject/bpdductx.html