Como integrar o Azure SignalR com proxies reversos
Um servidor proxy reverso pode ser usado na frente do Serviço Azure SignalR. Os servidores proxy reverso ficam entre os clientes e o serviço Azure SignalR, e outros serviços podem ajudar em vários cenários. Por exemplo, os servidores proxy reverso podem balancear a carga de diferentes solicitações de clientes para diferentes serviços de back-end, você geralmente pode configurar regras de roteamento diferentes para solicitações de clientes diferentes e fornecer uma experiência de usuário perfeita para usuários que acessam diferentes serviços de back-end. Eles também podem proteger seus servidores back-end contra vulnerabilidades de exploits comuns com controle de proteção centralizado. Serviços como o Azure Application Gateway, Azure API Management ou Akamai podem atuar como servidores proxy reverso.
Uma arquitetura comum usando um servidor proxy reverso com o Azure SignalR é a seguinte:
Importante
As cadeias de conexão brutas aparecem neste artigo apenas para fins de demonstração.
Uma cadeia de conexão inclui as informações de autorização necessárias para seu aplicativo acessar o serviço Azure Web PubSub. A chave de acesso dentro da cadeia de conexão é semelhante a uma senha de root para o seu serviço. Em ambientes de produção, proteja sempre as suas chaves de acesso. Use o Azure Key Vault para gerenciar e girar suas chaves com segurança e proteger sua cadeia de conexão usando a ID do Microsoft Entra e autorizar o acesso com a ID do Microsoft Entra.
Evite distribuir chaves de acesso para outros usuários, codificá-las ou salvá-las em qualquer lugar em texto simples acessível a outras pessoas. Rode as chaves se acreditar que podem ter sido comprometidas.
Práticas gerais
Há várias práticas gerais a serem seguidas ao usar um proxy reverso na frente do Serviço SignalR.
As cadeias de conexão brutas aparecem neste artigo apenas para fins de demonstração. Em ambientes de produção, proteja sempre as suas chaves de acesso. Use o Azure Key Vault para gerenciar e girar suas chaves com segurança e proteger sua cadeia de conexão usando a ID do Microsoft Entra e autorizar o acesso com a ID do Microsoft Entra.
Certifique-se de reescrever o cabeçalho HTTP HOST de entrada com a URL do serviço Azure SignalR, por exemplo.
https://demo.service.signalr.net
O Azure SignalR é um serviço multilocatário e depende doHOST
cabeçalho para resolver para o ponto de extremidade correto. Por exemplo, ao configurar o Gateway de Aplicativo para o Azure SignalR, selecione Sim para a opção Substituir com novo nome de host.Quando seu cliente passar pelo proxy reverso para o Azure SignalR, defina
ClientEndpoint
como sua URL de proxy reverso. Quando o cliente negociarcom o servidor de hub, o servidor de hub retornará a URL definida paraClientEndpoint
o cliente se conectar. Confira aqui mais detalhes.Há duas maneiras de configurar
ClientEndpoint
:Adicione uma
ClientEndpoint
seção ao seu ConnectionString:Endpoint=...;AccessKey=...;ClientEndpoint=<reverse-proxy-URL>
Configurar
ClientEndpoint
ao chamarAddAzureSignalR
:services.AddSignalR().AddAzureSignalR(o => { o.Endpoints = new Microsoft.Azure.SignalR.ServiceEndpoint[1] { new Microsoft.Azure.SignalR.ServiceEndpoint("<azure-signalr-connection-string>") { ClientEndpoint = new Uri("<reverse-proxy-URL>") } }; })
Quando um cliente passa pelo proxy reverso para o Azure SignalR, há dois tipos de solicitações:
- HTTP postar solicitação para
<reverse-proxy-URL>/client/negotiate/
, que chamamos de solicitação de negociação - Solicitação de conexão WebSocket/SSE/LongPolling, dependendo do seu tipo de transporte para
<reverse-proxy-URL>/client/
, que chamamos de solicitação de conexão.
Certifique-se de que o proxy reverso suporta ambos os tipos de transporte para
/client/
subcaminho. Por exemplo, quando o tipo de transporte for WebSocket, verifique se o proxy reverso suporta HTTP e WebSocket para/client/
subcaminho.Se você configurou vários serviços SignalR por trás do proxy reverso, certifique-se de que
negotiate
a solicitação econnect
a solicitação com o mesmoasrs_request_id
parâmetro de consulta (o que significa que são para a mesma conexão) sejam roteadas para a mesma instância de serviço SignalR.- HTTP postar solicitação para
Quando o proxy reverso é usado, você pode proteger ainda mais seu serviço SignalR desativando o acesso à rede pública e usando pontos de extremidade privados para permitir apenas o acesso privado do seu proxy reverso ao seu serviço SignalR através da VNet.
Próximos passos
Saiba como trabalhar com o Gerenciamento de API.
Saiba mais sobre os componentes internos do Azure SignalR.