http 将隧道连接到 websockets 服务器前面的代理吗?

http 将隧道连接到 websockets 服务器前面的代理吗?

我对此感到很为难。我们有一个 websocket 服务器在 myserver.com/wsDemo?ID=12 的端口 80 上监听。我们需要通过代理将客户端程序连接到此服务器来测试它。我尝试将 nginx 1.2.7 作为端口 8080 上的代理,在代理服务器上运行。我们希望客户端使用 http connect 方法连接到代理,然后让代理创建到 myserver.com/wsDemo?ID=12 websocket 应用服务器的隧道。这是我的 nginx 配置:

http {
include       /etc/nginx/mime.types;
default_type  application/octet-stream;

log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                  '$status $body_bytes_sent "$http_referer" '
                  '"$http_user_agent" "$http_x_forwarded_for"';

access_log  /var/log/nginx/access.log  main;

sendfile        on;
#tcp_nopush     on;

#keepalive_timeout  0;
keepalive_timeout  65;

gzip  on;
server{
    listen  8080;
    listen  80;

    location /wsDemo?ID=12 {
            proxy_pass http://myserver.com:80/wsDemo?ID=12;
            proxy_http_version 1.1;
            proxy_set_header Upgrade $http_upgrade;
            proxy_set_header Connection "upgrade";
    }
}

# Load config files from the /etc/nginx/conf.d directory
# The default server is in conf.d/default.conf
include /etc/nginx/conf.d/*.conf;

}

如果有人有推荐的其他工具,我很乐意使用任何代理来完成此操作(请添加配置示例)

答案1

nginx目前不支持 WebSocket 协议。第一个支持该协议的开发版本是1.3.13从 2 月 20 日起(来源:nginx.org)。

在达到生产就绪状态之前,您可能想尝试nginx_tcp_proxy_module来自 yaoweibin将 WebSocket 连接代理为普通连接TCP

相关内容