Uma pergunta terrivelmente escrita, mas o termo que eu estava procurando era o proxy reverso.
Basicamente, assim como o nginx pode encaminhar solicitações diferentes para várias instâncias do aplicativo da Web com base no caminho ou no nome do host, ele também pode ser configurado para "encaminhar" a solicitação para uma instância do servidor do websocket. por exemplo:
location /socket {
proxy_pass http://websocket;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $connection_upgrade;
}
upstream websocket{
server localhost:8000;
}
map $http_upgrade $connection_upgrade {
default Upgrade;
'' close;
}
As solicitações HTTP para http://hostname
serão exibidas na página html usual, enquanto a conexão websocket para wss://hostname/socket
será encaminhada para a instância websocket no mesmo servidor que estiver escutando na porta 8000.