nginx反向代理,400badrequest解决记录(websocket)
nginx反向代理,400badrequest解决记录(websocket)上篇⽂章提到了实现nginx的反向代理。 f中的配置如下:中国情人节是什么时候
location / {
proxy_http_version                1.1;
proxy_set_header Host            $host;
proxy_set_header X-Real-IP        $remote_addr;
proxy_set_header X-Forwarded-For  $proxy_add_x_forwarded_for;
proxy_set_header Cookie          $http_cookie;东莞有什么好玩的地方
proxy_set_header Upgrade          $http_upgrade;
proxy_set_header Connection      "upgrade";
自行车品牌排行proxy_pass                        web18;
}
当客户端发送GET请求时,程序⼀切安好,当POST时,ok,返回400 Bad Request,百思不得其解。检查了参数和后端返回内容,⼀切正常。然后把⽬标看向了header
proxy_set_header Connection      "upgrade";  对,就是这⼀⾏,删除之后程序恢复。
那么这⼀⾏什么意思呢,继续剖析,前往nginx官⽹ /en/docs/http/websocket.html
添加这⼀⾏使原本的http1.1请求升级成为websocket,websocket是什么?
Websocket是html5提出的⼀个协议规范,参考rfc6455。
websocket约定了⼀个通信的规范,通过⼀个握⼿的机制,客户端(浏览器)和服务器(webserver)之间能建⽴⼀个类似tcp的连接,从⽽⽅便c-s之间的通信。在websocket出现之前,web交互⼀般是基于http协议的短连接或者长连接。
家庭隔音
WebSocket是为解决客户端与服务端实时通信⽽产⽣的技术。websocket协议本质上是⼀个基于tcp的协议,是先通过HTTP/HTTPS协议发起⼀条特殊的http请求进⾏握⼿后创建⼀个⽤于交换数据的TCP连接,此后服务端与客户端通过此TCP连接
进⾏实时通信。
以前webserver实现推送技术或者即时通讯,⽤的都是轮询(polling),在特点的时间间隔(⽐如1秒钟)由浏览器⾃动发出请求,将服务器的消息主动的拉回来,在这种情况下,我们需要不断的向服务器发送请求,然⽽HTTPrequest的header是⾮常长的,⾥⾯包含的数据可能只是⼀个很⼩的值,这样会占⽤很多的带宽和服务器资源。⽽最⽐较新的技术去做轮询的效果是Comet – ⽤了AJAX。
但这种技术虽然可达到全双⼯通信,但依然需要发出请求(reuqest)。WebSocketAPI最伟⼤之处在于服务器和客户端可以在给定的时间范围内的任意时刻,相互推送信息。浏览器和服务器只需要要做⼀个握⼿的动作,在建⽴连接之后,服务器可以主动传送数据给客户端,客户端也可以随时向服务器发送数据。此外,服务器与客户端之间交换的标头信息很⼩。WebSocket并不限于以Ajax(或XHR)⽅式通信,因为Ajax技术需要客户端发起请求,⽽WebSocket服务器和客户端可以彼此相互推送信息;
dnf洞察之眼攻略但是这⾥客户端过来握⼿的协议proxy_set_header Upgrade  $http_upgrade; 空的,造成了badrequest的产⽣。火影忍者 宇智波斑

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。