以为很容易用到.. Nginx 从 1.3 开始支持 WebSocket, 如今已是 1.4.4 了
相对 HTTP, 看过例子发现配置其实比较简单,html
先用 ws
模块写一个简单的 WebSocket 服务器:node
Server = require('ws').Server wss = new Server port: 3000 wss.on 'connection', (ws) -> console.log 'a connection' ws.send 'started' console.log 'server started'
而后修改 Hosts, 添加, 好比 ws.repo
, 指向 127.0.0.1
而后是 Nginx 配置:nginx
server { listen 80; server_name ws.repo; location / { proxy_pass http://127.0.0.1:3000/; proxy_redirect off; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; } }
Reload Nginx 而后从浏览器控制台尝试连接, OKgit
new WebSocket('ws://ws.repo/')
或者经过 Upstream 的写法:github
upstream ws_server { server 127.0.0.1:3000; } server { listen 80; server_name ws.repo; location / { proxy_pass http://ws_server/; proxy_redirect off; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; } }
WebSocket 先是经过 HTTP 创建链接,
而后经过 101 状态码, 表示切换协议,, 在配置里是 Upgrade
不清楚具体里边发生了什么... 求指点...web
具体 HTTP Header 上的参数参考 SegmengFault 上的文章:
http://segmentfault.com/a/1190000000382788segmentfault
参考的相关文章:
nginx and WebSockets
WebSocket connection failed with nginx, nodejs and socket.io
Proxying WebSockets with Nginx
zhangkaitao/websocket-protocol
细说WebSocket - Node篇浏览器
返回博客首页: http://blog.tiye.me服务器