NGINX 1.3.14 代理 Websockets

NGINX 1.3.14 代理 Websockets

从 1.3.13 开始,Nginx 内置了 Websocket 支持,所以我应该拥有它。
有人能给我提供一个最简单的配置示例吗?该配置将允许我的 nginx(在 Centos 6 上)代理接受来自我的客户端的 HTTP 连接,然后代理将代表客户端与另一台服务器上的后端建立 websocket 连接,并在客户端和 websocket 服务器之间建立代理通信?

我已经尝试了好几天,但只收到400错误。我将非常感激。

我努力了:

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

关键是,这location并不匹配查询字符串(问号后面的内容)。

你将必须使用类似的东西if

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

相关内容