Nginx ↔ WebSocket: минимальный reverse-proxy-конфиг с Upgrade/Connection

Конфигурация Nginx, которая корректно проксирует WebSocket (ws/wss). Директива map и нужные заголовки — чтобы избежать 400/502 ошибок.

**Как это работает**

* map превращает пустой $http_upgrade в close, а присутствующий — в upgrade, как требует протокол.

* Заголовки Upgrade и Connection заставляют Nginx переключиться с HTTP на WebSocket.

* Директива proxy_http_version 1.1 обязательна: WebSocket использует апгрейд из HTTP/1.1.

Такой конфиг рекомендован официальной документацией и сообществом ⬆︎
# /etc/nginx/conf.d/websocket.conf
map $http_upgrade $connection_upgrade {
    default upgrade;
    ''      close;
}

upstream ws_backend {
    server 127.0.0.1:3000;   # ваш WebSocket-сервер
}

server {
    listen 443 ssl;
    server_name example.com;

    # ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
    # ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;

    location /ws/ {
        proxy_pass http://ws_backend;
        proxy_http_version 1.1;            # нужен HTTP/1.1
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection $connection_upgrade;
        proxy_set_header Host $host;
    }
}