Dela via


Integrera Azure SignalR med omvända proxyservrar

En omvänd proxyserver kan användas framför Azure SignalR Service. Omvända proxyservrar finns mellan klienterna och Azure SignalR-tjänsten och andra tjänster kan vara till hjälp i olika scenarier. Till exempel kan omvända proxyservrar belastningsutjämna olika klientbegäranden till olika serverdelstjänster, du kan vanligtvis konfigurera olika routningsregler för olika klientbegäranden och ge sömlös användarupplevelse för användare som har åtkomst till olika serverdelstjänster. De kan också skydda dina serverdelsservrar från vanliga sårbarheter med centraliserad skyddskontroll. Tjänster som Azure Application Gateway, Azure API Management eller Akamai kan fungera som omvända proxyservrar.

En vanlig arkitektur med hjälp av en omvänd proxyserver med Azure SignalR är enligt nedan:

Diagram som visar arkitekturen med Hjälp av Azure SignalR med en omvänd proxyserver.

Viktigt!

Råa anslutningssträng visas endast i den här artikeln i demonstrationssyfte.

En anslutningssträng innehåller den auktoriseringsinformation som krävs för att ditt program ska få åtkomst till Azure SignalR Service. Åtkomstnyckeln i anslutningssträng liknar ett rotlösenord för din tjänst. Skydda alltid dina åtkomstnycklar i produktionsmiljöer. Använd Azure Key Vault för att hantera och rotera dina nycklar på ett säkert sätt och skydda dina anslutningssträng med hjälp av Microsoft Entra-ID och auktorisera åtkomst med Microsoft Entra-ID.

Undvik att distribuera åtkomstnycklar till andra användare, hårdkoda dem eller spara dem var som helst i oformaterad text som är tillgänglig för andra. Rotera dina nycklar om du tror att de har komprometterats.

Allmänna metoder

Det finns flera allmänna metoder att följa när du använder en omvänd proxy framför SignalR Service.

Råa anslutningssträng visas endast i den här artikeln i demonstrationssyfte. Skydda alltid dina åtkomstnycklar i produktionsmiljöer. Använd Azure Key Vault för att hantera och rotera dina nycklar på ett säkert sätt och skydda dina anslutningssträng med hjälp av Microsoft Entra-ID och auktorisera åtkomst med Microsoft Entra-ID.

  • Se till att skriva om det inkommande HTTP HOST-huvudet med Azure SignalR-tjänstens URL, t.ex. https://demo.service.signalr.net. Azure SignalR är en tjänst för flera innehavare och förlitar sig på HOST rubriken för att matcha mot rätt slutpunkt. När du till exempel konfigurerar Application Gateway för Azure SignalR väljer du Ja för alternativet Åsidosätt med nytt värdnamn.

  • När klienten går igenom den omvända proxyn till Azure SignalR anger du ClientEndpoint som url för omvänd proxy. När klienten förhandlar medhubbservern returnerar hubbservern den URL som definierats ClientEndpoint för att klienten ska kunna ansluta. Mer information finns här.

    Det finns två sätt att konfigurera ClientEndpoint:

    • Lägg till ett ClientEndpoint avsnitt i ConnectionString: Endpoint=...;AccessKey=...;ClientEndpoint=<reverse-proxy-URL>

    • Konfigurera ClientEndpoint när du anropar 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>")
              }
          };
      })
      
  • När en klient går igenom din omvända proxy till Azure SignalR finns det två typer av begäranden:

    • HTTP-postbegäran till <reverse-proxy-URL>/client/negotiate/, som vi anropar som förhandlingsbegäran
    • WebSocket/SSE/LongPolling anslutningsbegäran beroende på din transporttyp till <reverse-proxy-URL>/client/, som vi anropar som anslutningsbegäran.

    Kontrollera att den omvända proxyn stöder båda transporttyperna för /client/ undersökvägen. När din transporttyp till exempel är WebSocket kontrollerar du att den omvända proxyn stöder både HTTP och WebSocket för /client/ undersökväg.

    Om du har konfigurerat flera SignalR-tjänster bakom den omvända proxyn kontrollerar du att negotiate begäran och connect begäran med samma asrs_request_id frågeparameter (vilket innebär att de är för samma anslutning) dirigeras till samma SignalR-tjänstinstans.

  • När omvänd proxy används kan du ytterligare skydda SignalR-tjänsten genom att inaktivera åtkomst till offentliga nätverk och använda privata slutpunkter för att endast tillåta privat åtkomst från din omvända proxy till SignalR-tjänsten via VNet.

Nästa steg