玩如果请求来自nginx,框架将返回websocket连接的空头
我正在使用nginx1.3.7并开始玩!Framework2.1,我需要代理我的HTTP、HTTPS和WebSocket连接到Play!通过nginx访问服务器 我依赖nginx主干的websocket代理功能,并设置了“升级”和“连接”头,以正确转发websocket连接的头(): 我确保了那出戏!在websocket初始化期间获取正确的标题。正在使用request.headers对象!没有nginx的情况下与我们的完全相同玩如果请求来自nginx,框架将返回websocket连接的空头,nginx,playframework,websocket,playframework-2.1,Nginx,Playframework,Websocket,Playframework 2.1,我正在使用nginx1.3.7并开始玩!Framework2.1,我需要代理我的HTTP、HTTPS和WebSocket连接到Play!通过nginx访问服务器 我依赖nginx主干的websocket代理功能,并设置了“升级”和“连接”头,以正确转发websocket连接的头(): 我确保了那出戏!在websocket初始化期间获取正确的标题。正在使用request.headers对象!没有nginx的情况下与我们的完全相同 Map( Cache-Control -> Buffer(
Map(
Cache-Control -> Buffer(no-cache),
Connection -> Buffer(Upgrade),
Host -> Buffer(my-backend),
Origin -> Buffer(https://my-host:8443),
Pragma -> Buffer(no-cache),
Sec-WebSocket-Extensions -> Buffer(x-webkit-deflate-frame),
Sec-WebSocket-Key -> Buffer(nk5JVO4I5QRMQnSxAJaRCg==),
Sec-WebSocket-Version -> Buffer(13),
Upgrade -> Buffer(websocket)
)
问题是:如果请求来自nginx,那么响应来自Play!为空,不包含任何标题,仅包含协议版本:“HTTP/1.1 0”。
正确的回答来自游戏!看起来是这样的:
HTTP/1.1 101 Switching Protocols
Connection: Upgrade
Sec-WebSocket-Accept: YHVb1xdsVqaObgQxqksBQPhdkvc=
Upgrade: websocket
是的,解决方案当然是使用正确版本的nginx。1.3.7转发“连接:升级”标志失败,因为该功能仅在nginx 1.3.13中引入
我建议使用最新的dev/trunk版本。nginx似乎放弃了从游戏中获得的“连接:升级”!而是填写“连接:保持活动”,这让websocket连接失败。请参阅http头->不是说websocket可从1.3.13获得吗?nginx1.3.7不支持websocket。
HTTP/1.1 101 Switching Protocols
Connection: Upgrade
Sec-WebSocket-Accept: YHVb1xdsVqaObgQxqksBQPhdkvc=
Upgrade: websocket