015_NGINX作为WebSocket Proxy的设置

产研那边有通过nginx代理进行长连接的需求,咱们都知道默认nginx只支持短连接的,使用长连接需要单独配置

一、

websocket协议提供创建一种支持在server和client之前双向通信的web应用。作为HTML5的一部分,websock使比它之前可用的方式中提供一个种更加简单的方法。大部分现在的浏览器都支持websock,包括chrome,Firefox,Internet浏览器,Opera,和Safari,和越来越多的服务器应用框架也开始支持websock了。

The WebSocket protocol is different from the HTTP protocol,但是websocket握手是兼容http的,用TTP Upgrade方式更新从HTTP到websock的连接。This allows WebSocket applications to more easily fit into existing infrastructures.例如,websock应用能使用标准的http端口80和443进行通信。

A WebSocket application keeps a long?running connection open between the client and the server, facilitating the development of real?time applications. 这个 HTTP Upgrade 机制通过使用" the Upgrade and Connection headers." 来更新从HTTP到websocket的连接。There are some challenges that a reverse proxy server faces in supporting WebSocket. 一个是websocket是一个中hop-by-hop(逐跳)协议, so when a proxy server intercepts an Upgrade request from a client it needs to send its own Upgrade request to the backend server, including the appropriate headers. 还有,websocket连接是长连接,相反使用http时典型的短连接,即反向代理server需要在它们在空闲的时候需要保持这些连接保持open,而不是关闭它们。

NGINX supports WebSocket by allowing a tunnel to be set up between a client and a backend server. 对于nginx发送upgrade请求从client到后端的server, the Upgrade and Connectionheaders must be set explicitly, as in this example:

location /wsapp/ {
    proxy_pass http://wsbackend;
    proxy_http_version 1.1;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection "upgrade";
}

Once this is done, NGINX deals with this as a WebSocket connection.

二、举个栗子。

参考:https://www.nginx.com/blog/websocket-nginx/

时间: 2024-10-29 19:10:49

015_NGINX作为WebSocket Proxy的设置的相关文章

HTTP请求的python实现(urlopen、headers处理、 Cookie处理、设置Timeout超时、 重定向、Proxy的设置)

## python实现HTTP请求的三中方式:urllib2/urllib.httplib/urllib 以及Requests urllib2/urllib实现 urllib2和urllib是python两个内置的模块,要实现HTTP功能,实现方式是以urllib2为主,urllib为辅 1 首先实现一个完整的请求与响应模型 urllib2提供基础函数urlopen, import urllib2 response = urllib2.urlopen('http://www.cnblogs.co

五种ip proxy的设置方法

我们在制作爬虫爬取想要的资料时,由于是计算机自动抓取,强度大.速度快,通常会给网站服务器带来巨大压力,所以同一个IP反复爬取同一个网页,就很可能被封,在这里介绍相关的技巧,以免被封:但在制作爬虫时,还是要适当加入延时代码,以减少对目标网站的影响. 一.requests设置代理: import requests proxies = { "http": "http://192.10.1.10:8080", "https": "http://

开源Squid Proxy Server 设置

设置Squid的目的当你在企业内部,Internet断掉的情况下,你可以默认路由走别的路径出去,比如从Squid 所在网络出口出去 Part 1. restart the squid service the squid path is working in /usr/local/squid/sbin/squid Configuration file /usr/local/squid/etc/squid.conf sudo ./squid -s <--- start the processsudo

nginx websocket proxy

map $http_upgrade $connection_upgrade { default upgrade; '' close; } upstream websocket { server 127.0.0.1:2346; } server { listen 80 default; ..... location = /socket.php { proxy_pass http://websocket; proxy_http_version 1.1; proxy_set_header Upgrad

urllib的实现---timeout,获取http响应码,重定向,proxy的设置

1.Timeout设置超时 只能修改Socket设置全局Timeout #! /usr/bin/env python3 import socket import urllib.request # timeout in seconds timeout = 2 socket.setdefaulttimeout(timeout) # this call to urllib.request.urlopen now uses the default timeout # we have set in the

设置Proxy Server和SQL Server实现互联网上的数据库安全

◆首先,我们需要了解一下SQL Server在WinSock上定义协议的步骤: 1. 在"启动"菜单上,指向"程序/Microsoft Proxy Server",然后点击"Microsoft Management Console". 2. 展开"Internet Information Service",再展开运行Proxy Server的服务器. 3. 右击WinSock Proxy service, 再点击属性. 4.

Selenium Chrome浏览器的启动以及proxy设置

虽然WebDriver对Firefox的支持最好,之前写的脚本也都在Firefox浏览器运行,但最近项目做了整合,发现新整合的功能不太支持Firefox,而近期也没有计划做浏览器兼容性方面的改进,所以我的自动化脚本要重新修改,运行在都有良好支持的Chrome浏览器上.说了这么多背景,我们就进入正题吧. 1. 首先需要下载chromeDriver. http://chromedriver.storage.googleapis.com/index.html 2. 将下载好的文件解压,将chromed

如何在android studio 1.0 启动时设置代理【解决WARN - ateSettings.impl.UpdateChecker - Connection failed.】

今天第一次用android studio,下了个比较新的1.0.1 linux版本,结果启动时老是出现以下错误: [ 6987] WARN - ateSettings.impl.UpdateChecker - Connection failed. Please check your network connection and try again. 百度了以下,都没找到可行方案,最后在google里找到了解决方案,在此记录下来,供大家参考. 方法1: 到android studio安装目录,打开

freeradius的proxy功能

要配置freeRADIUS的proxy功能,就需要熟悉它的两个配置文件:proxy.conf 和client.conf. 1. proxy.conf主要是用来配置被代理的radius server(也叫home server) 和 realm, 以及他们之间的映射关系,也就是request转发到那个home server.该配置文件中主要有三个配置项目: a. home_server : 主要用来配置home server的属性, 也就是被代理的radius server的属性,主要包括home