无法使用NginX/FastCGI进行Websocket连接

无法使用NginX/FastCGI进行Websocket连接,nginx,websocket,go,Nginx,Websocket,Go,我有一个用Go编写的web应用程序。当我使用标准库附带的web服务器运行应用程序时,websocket连接工作正常 但是,当我将web应用程序作为FastCGI应用程序运行并使用NginX作为代理时,无法建立websocket连接。我收到以下错误消息: websocket: response does not implement http.Hijacker 我正在使用websocket连接,并具有以下设置: Go处理程序: func NotificationsWebSocket(w http.

我有一个用Go编写的web应用程序。当我使用标准库附带的web服务器运行应用程序时,websocket连接工作正常

但是,当我将web应用程序作为FastCGI应用程序运行并使用NginX作为代理时,无法建立websocket连接。我收到以下错误消息:

websocket: response does not implement http.Hijacker
我正在使用websocket连接,并具有以下设置:

Go处理程序:

func NotificationsWebSocket(w http.ResponseWriter, r *http.Request) {
    ws, err := websocket.Upgrade(w, r, nil, 1024, 1024)
    if err != nil {
        log.Print(err.Error())
        return
    }
    //...
}

//...

router.HandleFunc("/notifications", NotificationsWebsocket)

//...

tcp, err := net.Listen("tcp", "127.0.0.1:9000")
handleErr(err)
err = fcgi.Serve(tcp, router)
nginx.conf

location ~ ^.+$ {
    fastcgi_pass 127.0.0.1:9000;
    include /etc/nginx/fastcgi_params;
}
我可以这样做的一种方法是为所有常规web处理程序建立一个FastCGI连接,并为websocket处理程序运行一个单独的web服务器,然后相应地处理NginX中的/notifications路径,但我希望尽可能避免这种情况


有人知道是否有办法配置NginX以允许将连接升级到websockets吗?

您得到的错误是fcgi响应不是劫持者(websockets使用劫持者接口接管tcp套接字)

它与nginx版本没有任何关系


此外,FCGI与websockets不兼容,您需要另一台服务器并反向代理它。您得到的错误是FCGI响应不是劫持者(websockets使用劫持者接口接管tcp套接字)

它与nginx版本没有任何关系


此外,FCGI与websockets不兼容,您需要另一台服务器并反向代理它。您得到的错误是FCGI响应不是劫持者(websockets使用劫持者接口接管tcp套接字)

它与nginx版本没有任何关系


此外,FCGI与websockets不兼容,您需要另一台服务器并反向代理它。您得到的错误是FCGI响应不是劫持者(websockets使用劫持者接口接管tcp套接字)

它与nginx版本没有任何关系


此外,FCGI与WebSocket不兼容,您需要另一台服务器和反向代理

您使用的是哪个版本的nginx?对WebSocket的支持仅在1.3.13中添加,因此如果您使用的是旧版本,则需要升级。我使用的是1.4.5。我知道我可以在nginx.conf中为/notifications添加另一个位置指令,并将WebSocket处理程序拆分到另一个web服务器中,但我想知道是否有一种方法可以在FastCGI中实现这一点。您得到的错误是fcgi响应也不是劫持者(WebSocket使用劫持者接口接管tcp套接字)。它与nginx版本没有任何关系。FCGI与websockets不兼容,您需要另一台服务器和itOkay的反向代理,以清除所有内容。你能把它作为答案吗?你使用的是什么版本的nginx?对WebSocket的支持仅在1.3.13中添加,因此如果您使用的是旧版本,则需要升级。我使用的是1.4.5。我知道我可以在nginx.conf中为/notifications添加另一个位置指令,并将WebSocket处理程序拆分到另一个web服务器中,但我想知道是否有一种方法可以在FastCGI中实现这一点。您得到的错误是fcgi响应也不是劫持者(WebSocket使用劫持者接口接管tcp套接字)。它与nginx版本没有任何关系。FCGI与websockets不兼容,您需要另一台服务器和itOkay的反向代理,以清除所有内容。你能把它作为答案吗?你使用的是什么版本的nginx?对WebSocket的支持仅在1.3.13中添加,因此如果您使用的是旧版本,则需要升级。我使用的是1.4.5。我知道我可以在nginx.conf中为/notifications添加另一个位置指令,并将WebSocket处理程序拆分到另一个web服务器中,但我想知道是否有一种方法可以在FastCGI中实现这一点。您得到的错误是fcgi响应也不是劫持者(WebSocket使用劫持者接口接管tcp套接字)。它与nginx版本没有任何关系。FCGI与websockets不兼容,您需要另一台服务器和itOkay的反向代理,以清除所有内容。你能把它作为答案吗?你使用的是什么版本的nginx?对WebSocket的支持仅在1.3.13中添加,因此如果您使用的是旧版本,则需要升级。我使用的是1.4.5。我知道我可以在nginx.conf中为/notifications添加另一个位置指令,并将WebSocket处理程序拆分到另一个web服务器中,但我想知道是否有一种方法可以在FastCGI中实现这一点。您得到的错误是fcgi响应也不是劫持者(WebSocket使用劫持者接口接管tcp套接字)。它与nginx版本没有任何关系。FCGI与websockets不兼容,您需要另一台服务器和itOkay的反向代理,以清除所有内容。你能把这个作为答案吗?