nginx под Windows и проксирование вебсокетов

Господа,

я пытаюсь разрабатывать react приложение, а чтобы оно могло общаться и с Node (котрая нужна на этапе отладки) и с rest - сервером - мне приходится ставить перед ним nginx в качестве прокси. Да, важное уточнение: всё это я делаю под Win 10.

Ну, nginx раскидывает запросы: те запросы, которые начинаются с /api/ - кидает на rest- сервер, а остальные - на node.

Но вот беда: при заходе на такой прокси у меня пояавляется в барузере ошибка:

    webpackHotDevClient.js:60 WebSocket connection to 'ws://localhost/sockjs-node' failed: Error during WebSocket handshake: Unexpected response code: 404  

Понятно, почему: не работает отладка react - приложений, которая реализована через websocket - соединение.

Ладно, думаю я. Дописываю в конфиг nginx'а секцию

  location /sockjs-node/ {
        proxy_pass http://localhost:3000;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection $connection_upgrade;
        proxy_read_timeout 3600s;
    }

и... получаю при старте nginx ошибку

    nginx: [emerg] unknown "connection_upgrade" variable

Если же эту строку из конфига выкинуть, то при запуске nginx и попытке использовать отладку - возникает другая ошибка в браузере:

    WebSocket connection to 'ws://localhost/sockjs-node' failed: Error during WebSocket handshake: Unexpected response code: 301

То есть, как я понимаю, клиент и сервер websocket не могут договориться о параметрах протокола. Хэндшейк не проиходит.

Попробовал обойтись без этих переменых, прописав всё руками:

    location /sockjs-node/ {
        proxy_pass http://localhost:3000;
        proxy_http_version 1.1;
        proxy_set_header Upgrade "Upgrade";
        proxy_set_header Connection "Upgrade";
        #proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }

Но ошибка остаётся той же самой:

    WebSocket connection to 'ws://localhost/sockjs-node' failed: Error during WebSocket handshake: Unexpected response code: 301

Ладно, читаю на сайте nginx "возможные проблемы" при использовании nginx for windows: "Проксирование по UDP не поддерживается". Не могу понять, имеет ли это отношение к моей ситуации.

Означает ли это, что проксирование вебсокетов через nginx под виндой запустить так и не удастся? Или есть какой то обходной путь?

Спасибо заранее!

Дополнение. Конфиг nginx целиком:

    worker_processes  1;


    events {
        worker_connections  1024;
    }

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

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

        sendfile        on;

        keepalive_timeout  65;

        server {
            listen       80;
            server_name  localhost;

            location /api/ {
              add_header 'Access-Control-Allow-Origin' "$http_origin" always;
              proxy_redirect          http://localhost:9000/  /api/; 
              proxy_pass_header       Server;
              proxy_set_header        X-Real-IP $remote_addr;
              proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
              proxy_set_header        X-Scheme $scheme;
              proxy_set_header        Host $http_host;
              proxy_set_header        X-NginX-Proxy true;
              proxy_connect_timeout   5;
              proxy_read_timeout      240;
              proxy_intercept_errors  on;

              proxy_pass              http://localhost:9000;
          }

          location / {
              proxy_redirect          http://localhost:3000/  /; 
              proxy_pass_header       Server;
              proxy_set_header        X-Real-IP $remote_addr;
              proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
              proxy_set_header        X-Scheme $scheme;
              proxy_set_header        Host $http_host;
              proxy_set_header        X-NginX-Proxy true;
              proxy_connect_timeout   5;
              proxy_read_timeout      240;
              proxy_intercept_errors  on;

              proxy_pass              http://localhost:3000;
          }

          location /sockjs-node/ {
                proxy_pass http://localhost:3000;
                proxy_http_version 1.1;
                proxy_set_header Upgrade $http_upgrade;
                proxy_set_header Connection "Upgrade";
                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            }

            error_page   500 502 503 504  /50x.html;
            location = /50x.html {
                root   html;
            }
        }
    }

Ответы (0 шт):