Websocket proxy

This must have been discussed before but I am new to nginx
and this forum.

I am upgrading to 1.4 to use its websocket proxy feature.
Say I have a websocket server running at port 81, so I want
to forward all websocket packets to port 81, and process
the rest at port 80.

Somehow the following conf doesn’t work, anything missing?

server {
listen [::]:80 ipv6only=off;

    location / {
        regular_http_processing_directive;

        if ($http_upgrade = "websocket") {
            proxy_pass http://localhost:81;
        }

        proxy_http_version 1.1;
        proxy_set_header Upgrade websocket;
        proxy_set_header Connection upgrade;
    }

}

  • Alder

At the http level:

map $http_upgrade $connection_upgrade {
default upgrade;
‘’ close;
}

map $connection_upgrade $proxy_upstream_port {
upgrade 81;
close 80;
}

Then at the location do:

location / {
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $connection_upgrade;
proxy_pass http://localhost:$proxy_upstream_port;
}

Partly taken from WebSocket proxying.

----appa

Thanks for the recipe.

Just tried and now I am not able to get regular
HTTP working on port 80.

Has anybody ever got nginx websocket proxy working?

Thanks,

  • Alder