Nginx WebSocket打开握手超时

Nginx WebSocket打开握手超时,nginx,websocket,tornado,google-compute-engine,google-cloud-platform,Nginx,Websocket,Tornado,Google Compute Engine,Google Cloud Platform,我正在研究一个谷歌云计算引擎实例。Ubuntu 12.04。 我在服务器上安装了一个Tornado应用程序,在端口8888上工作,并且我有如下所示的nginx配置: map $http_upgrade $connection_upgrade { default upgrade; '' close; } upstream chat_servers { server 127.0.0.1:8888; } server { listen 80; server

我正在研究一个谷歌云计算引擎实例。Ubuntu 12.04。 我在服务器上安装了一个Tornado应用程序,在端口8888上工作,并且我有如下所示的nginx配置:

map $http_upgrade $connection_upgrade {
  default upgrade;
  ''      close;
}

upstream chat_servers {
    server 127.0.0.1:8888;
}

server {
    listen 80;
    server_name chat.myapp.com;

    access_log /home/ubuntu/logs/nginx_access.log;
    error_log /home/ubuntu/logs/nginx_error.log;

    location /talk/ {
        proxy_set_header X-Real-IP $remote_addr;  # http://wiki.nginx.org/HttpProxyModule
        proxy_set_header Host $host;  # pass the host header - http://wiki.nginx.org/HttpProxyModule#proxy_pass
        proxy_http_version 1.1;  # recommended with keepalive connections - http://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_http_version
        # WebSocket proxying - from http://nginx.org/en/docs/http/websocket.html
        proxy_connect_timeout 7d;
        proxy_send_timeout 7d;
        proxy_read_timeout 7d;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection $connection_upgrade;
        proxy_pass       http://chat_servers;

    }
}
当我试图通过Javascript连接到
ws://chat.myapp.com/talk/etc/
时,
WebSocketHandler
上的Tornado应用程序的
open()
方法被调用,我成功地在服务器上打印日志,但在客户端,代码从未进入
onopen()
并且在一段时间后我得到
1006错误代码,
WebSocket打开握手超时`

这个应用程序在相同配置的Amazon(AWS)EC2服务器上运行得很好,但在我移动到谷歌云之后,不知何故,握手无法完成

是否有任何特定于谷歌云的配置?或者文件上的任何nginx更新


我很困惑,为此我花了两天时间,但无法解决问题。

Ubuntu上默认的nginx版本是
nginx/1.1.19
。我将其更新为
nginx/1.8.0
。问题解决了