Sdílet prostřednictvím


Integrace Služby Azure SignalR s reverzními proxy servery

Reverzní proxy server je možné použít před službou Azure SignalR. Reverzní proxy servery se nacházejí mezi klienty a službou Azure SignalR a mohou pomoci také v různých scénářích s dalšími službami. Reverzní proxy servery můžou například vyrovnávat zatížení různých požadavků klientů na různé back-endové služby, obvykle můžete nakonfigurovat různá pravidla směrování pro různé požadavky klientů a zajistit bezproblémové uživatelské prostředí pro uživatele, kteří přistupují k různým back-endovým službám. Můžou také chránit vaši serverovou infrastrukturu před běžnými útoky na zranitelnosti pomocí centralizované ochrany. Služby jako Azure Application Gateway, Azure API Management nebo Akamai můžou fungovat jako reverzní proxy servery.

Běžná architektura využívající reverzní proxy server s Azure SignalR je následující:

Diagram znázorňující architekturu využívající Azure SignalR s reverzním proxy serverem

Důležité

Surové připojovací řetězce jsou v tomto článku uvedeny jen pro demonstrační účely.

Připojovací řetězec obsahuje autorizační informace potřebné pro vaši aplikaci pro přístup ke službě Azure SignalR. Přístupový klíč uvnitř připojovací řetězec je podobný kořenovému heslu pro vaši službu. V produkčních prostředích vždy chraňte přístupové klíče. Pomocí služby Azure Key Vault můžete bezpečně spravovat a obměňovat klíče a zabezpečit připojovací řetězec pomocí ID Microsoft Entra a autorizovat přístup pomocí Microsoft Entra ID.

Vyhněte se distribuci přístupových klíčů ostatním uživatelům, jejich pevnému kódování nebo jejich uložení kdekoli ve formátu prostého textu, který je přístupný ostatním uživatelům. Otočte klíče, pokud se domníváte, že mohly být ohroženy.

Obecné postupy

Při použití reverzního proxy serveru před službou SignalR Service existuje několik obecných postupů.

Surové připojovací řetězce jsou v tomto článku uvedeny jen pro demonstrační účely. V produkčních prostředích vždy chraňte přístupové klíče. Pomocí služby Azure Key Vault můžete bezpečně spravovat a obměňovat klíče a zabezpečit připojovací řetězec pomocí ID Microsoft Entra a autorizovat přístup pomocí Microsoft Entra ID.

  • Nezapomeňte přepsat příchozí hlavičku HOST s adresou URL služby Azure SignalR, například https://demo.service.signalr.net. Azure SignalR je služba s více tenanty a spoléhá na hlavičku HOST pro určení správného koncového bodu. Například při konfiguraci služby Application Gateway pro Azure SignalR vyberte u možnosti Přepsat novým názvem hostitele možnost Ano.

  • Když klient prochází přes reverzní proxy server do Azure SignalR, nastavte ClientEndpoint ji jako adresu URL reverzního proxy serveru. Když klient vyjednás vaším centrálním serverem, server centra vrátí adresu URL definovanou ClientEndpoint pro připojení klienta. Další podrobnosti najdete tady.

    Existují dva způsoby konfigurace ClientEndpoint:

    • Přidejte do připojovacího ClientEndpoint řetězce oddíl: Endpoint=...;AccessKey=...;ClientEndpoint=<reverse-proxy-URL>

    • Konfigurace ClientEndpoint při volání AddAzureSignalR:

      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>")
              }
          };
      })
      
  • Když klient prochází přes reverzní proxy server do Azure SignalR, existují dva typy požadavků:

    • Požadavek HTTP post na <reverse-proxy-URL>/client/negotiate/, který nazýváme jako žádost o vyjednání
    • Požadavek na připojení WebSocket/SSE/LongPolling v závislosti na typu přenosu na <reverse-proxy-URL>/client/, který nazýváme žádostí o připojení.

    Ujistěte se, že reverzní proxy server podporuje oba typy přenosu pro /client/ dílčí cestu. Pokud je například typ přenosu WebSocket, ujistěte se, že reverzní proxy server podporuje pro dílčí cestu protokol HTTP i WebSocket /client/ .

    Pokud jste nakonfigurovali několik služeb SignalR za reverzním proxy serverem, ujistěte se, že negotiate požadavek a connect požadavek se stejným asrs_request_id parametrem dotazu (což znamená, že jsou pro stejné připojení) směrovány do stejné instance služby SignalR.

  • Pro ServerSentEvent(SSE) se ujistěte, že váš reverzní proxy server nevyrovnává ani nemá v mezipaměti odpovědi. Například služba API Management tady uvádí kontrolní položky při konfiguraci rozhraní API pro události odesílané serverem.

  • Při použití reverzního proxy serveru můžete službu SignalR dále zabezpečit zakázáním přístupu k veřejné síti a použitím privátních koncových bodů, abyste povolili pouze privátní přístup z reverzního proxy serveru ke službě SignalR prostřednictvím virtuální sítě.

Další kroky