没有代理的 Tornado WebSocket 服务器
Posted
技术标签:
【中文标题】没有代理的 Tornado WebSocket 服务器【英文标题】:Tornado WebSocket Server without proxy 【发布时间】:2013-03-09 22:51:58 【问题描述】:我有一个可以在我的本地机器上正常工作的 tornado websocket 服务器。但是当我将它部署到 Web 服务器并使用 supervisord 运行它时,我无法连接到 javascript websockets。 我试图在防火墙中打开端口,但不起作用。 我还尝试使用带有 nginx(和 tcp 模块)的代理
tcp
upstream websockets
server abc.de.efg.hij:23581;
check interval=3000 rise=2 fall=5 timeout=1000;
server
listen abc.de.efg.hij:45645;
server_name _;
tcp_nodelay on;
proxy_pass websockets;
但也不起作用。 这里有什么问题?
【问题讨论】:
尝试使用haproxy
。
您现在可以使用 Nginx 作为 websockets 的反向代理。有关操作方法,请参阅 proxying-websockets-with-nginx。
【参考方案1】:
您需要为 websocket 添加一个额外的“位置”部分,以确保正确传递升级标头:
location /YOUR_SOCKET_ENDPOINT/
proxy_pass http://backend;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
文档在这里:http://nginx.org/en/docs/http/websocket.html
【讨论】:
以上是关于没有代理的 Tornado WebSocket 服务器的主要内容,如果未能解决你的问题,请参考以下文章
同时使用 Python Tornado 后端、WebSocket 监听器和 MQTT 客户端
Tornado-第三篇-tornado支持websocket协议