因为需要频繁和后台交互数据,于是想上websocket。用tornado搭建了服务后端,还需要Apache配合进行反向代理,查了一下,有个modproxywstunnel模块可以做ws的反向代理,配置起来也比较简单
ProxyPass "/ws2/" "ws://echo.websocket.org/"
ProxyPass "/wss2/" "wss://echo.websocket.org/"
上了模块后,出现Safari偶尔(或者说,比较频繁的)出现错误
status line does not end with crlf
。查看apache的日志,发现错误码500。于是放狗搜索,发现了一个bug。原因基本上是因为apache复用了之前建立的连接,导致再次使用该连接握手时,出现了错误。解决方案有两个:- (未测试)在ProxyPass指令后面追加
disablereuse=on
- 升级Apache2到2.4.10以上。
我采用了后一种方案,但是我的主机是Ubuntu 14.04,源里面的Apache2的版本只到2.4.7,于是只能使用一个PPA解决
sudo add-apt-repository ppa:ondrej/apache2
sudo apt-get update
sudo apt-get --only-upgrade install apache2
sudo service apache2 restart
欧了.
No comments:
Post a Comment