Opened 4 weeks ago

Closed 3 weeks ago

#2278 closed defect (invalid)

Websocket Redirect port

Reported by: warrmr@… Owned by:
Priority: minor Milestone:
Component: documentation Version:
Keywords: Cc:
uname -a: Linux 28ecfa61a682 5.4.0-77-generic #86-Ubuntu SMP Thu Jun 17 02:35:03 UTC 2021 x86_64 GNU/Linux
nginx -V: nginx version: nginx/1.21.3
built by gcc 8.3.0 (Debian 8.3.0-6)
built with OpenSSL 1.1.1d 10 Sep 2019
TLS SNI support enabled
configure arguments: --prefix=/etc/nginx --sbin-path=/usr/sbin/nginx --modules-path=/usr/lib/nginx/modules --conf-path=/etc/nginx/nginx.conf --error-log-path=/var/log/nginx/error.log --http-log-path=/var/log/nginx/access.log --pid-path=/var/run/nginx.pid --lock-path=/var/run/nginx.lock --http-client-body-temp-path=/var/cache/nginx/client_temp --http-proxy-temp-path=/var/cache/nginx/proxy_temp --http-fastcgi-temp-path=/var/cache/nginx/fastcgi_temp --http-uwsgi-temp-path=/var/cache/nginx/uwsgi_temp --http-scgi-temp-path=/var/cache/nginx/scgi_temp --user=nginx --group=nginx --with-compat --with-file-aio --with-threads --with-http_addition_module --with-http_auth_request_module --with-http_dav_module --with-http_flv_module --with-http_gunzip_module --with-http_gzip_static_module --with-http_mp4_module --with-http_random_index_module --with-http_realip_module --with-http_secure_link_module --with-http_slice_module --with-http_ssl_module --with-http_stub_status_module --with-http_sub_module --with-http_v2_module --with-mail --with-mail_ssl_module --with-stream --with-stream_realip_module --with-stream_ssl_module --with-stream_ssl_preread_module --with-cc-opt='-g -O2 -fdebug-prefix-map=/data/builder/debuild/nginx-1.21.3/debian/debuild-base/nginx-1.21.3=. -fstack-protector-strong -Wformat -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -fPIC' --with-ld-opt='-Wl,-z,relro -Wl,-z,now -Wl,--as-needed -pie'

Description

Good Evenings,

I have written an application that uses websockets that is running within a container behind an Nginx proxy and have been having problems getting websockets to work through the Nginx proxy.
So I have boiled down the config to the bare bones in order to troubleshoot this issue and have found out that if I map the port 1:1 it works eg line 14 of the code snippet below changed to "listen 55700;" and it works I can connect a websocket to ws://domain:55700 but if I use the config below as it is and try and connect to ws://domain:8888 it fails and I am unable to see any errors in Nginx.

events { worker_connections 1024; }

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

    upstream appserver {
        server demo-server:55700; 
    }

    server {
        listen 8888; 

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

Change History (1)

comment:1 by Maxim Dounin, 3 weeks ago

Resolution: invalid
Status: newclosed

The websocket protocol does not depend on ports. Your backend server might, however, might return various links or redirects before the websocket connection is established, and these might break things. In most cases properly configured proxy_redirect helps, check the responses returned by your backend server to find out if you need to configure it and exactly to configure it.

If you need further help with configuring nginx, consider using support options available.

Note: See TracTickets for help on using tickets.