Jak zintegrować usługę Azure SignalR z zwrotnymi serwerami proxy
Zwrotny serwer proxy może być używany przed usługą Azure SignalR Service. Odwrotne serwery proxy znajdują się między klientami a usługą Azure SignalR i innymi usługami, które mogą pomóc w różnych scenariuszach. Na przykład odwrotne serwery proxy mogą równoważyć obciążenie różnych żądań klientów do różnych usług zaplecza, zazwyczaj można skonfigurować różne reguły routingu dla różnych żądań klientów i zapewnić bezproblemowe środowisko użytkownika dla użytkowników korzystających z różnych usług zaplecza. Mogą również chronić serwery zaplecza przed typowymi lukami w zabezpieczeniach za pomocą scentralizowanej kontroli ochrony. Usługi takie jak aplikacja systemu Azure Gateway, Azure API Management lub Akamai mogą pełnić rolę zwrotnych serwerów proxy.
Typowa architektura korzystająca z odwrotnego serwera proxy z usługą Azure SignalR jest następująca:
Ważne
Nieprzetworzone parametry połączenia są wyświetlane tylko w tym artykule w celach demonstracyjnych.
Parametry połączenia zawiera informacje o autoryzacji wymagane przez aplikację w celu uzyskania dostępu do usługi Azure Web PubSub. Klucz dostępu wewnątrz parametry połączenia jest podobny do hasła głównego usługi. W środowiskach produkcyjnych zawsze chroń klucze dostępu. Usługa Azure Key Vault umożliwia bezpieczne zarządzanie kluczami i obracanie ich oraz zabezpieczanie parametry połączenia przy użyciu identyfikatora Entra firmy Microsoft.
Unikaj dystrybuowania kluczy dostępu do innych użytkowników, kodowania ich lub zapisywania ich w dowolnym miejscu w postaci zwykłego tekstu, który jest dostępny dla innych użytkowników. Obracanie kluczy, jeśli uważasz, że mogły one zostać naruszone.
Ogólne praktyki
Istnieje kilka ogólnych rozwiązań, które należy stosować w przypadku korzystania z zwrotnego serwera proxy przed usługą SignalR Service.
Nieprzetworzone parametry połączenia są wyświetlane tylko w tym artykule w celach demonstracyjnych. W środowiskach produkcyjnych zawsze chroń klucze dostępu. Usługa Azure Key Vault umożliwia bezpieczne zarządzanie kluczami i obracanie ich oraz zabezpieczanie parametry połączenia przy użyciu identyfikatora Entra firmy Microsoft.
Pamiętaj o ponownym zapisie przychodzącego nagłówka hosta HTTP przy użyciu adresu URL usługi Azure SignalR, np.
https://demo.service.signalr.net
. Usługa Azure SignalR jest usługą wielodostępną i opiera się na nagłówkuHOST
w celu rozpoznania poprawnego punktu końcowego. Na przykład podczas konfigurowania usługi Application Gateway dla usługi Azure SignalR wybierz opcję Tak dla opcji Zastąpij nową nazwą hosta.Gdy klient przechodzi przez zwrotny serwer proxy do usługi Azure SignalR, ustaw
ClientEndpoint
go jako zwrotny adres URL serwera proxy. Gdy klient negocjujeusługę z serwerem centrum, serwer koncentratora zwróci adres URL zdefiniowany przezClientEndpoint
klienta, aby nawiązać połączenie. Sprawdź tutaj, aby uzyskać więcej szczegółów.Istnieją dwa sposoby konfigurowania
ClientEndpoint
:Dodaj sekcję
ClientEndpoint
do elementu ConnectionString:Endpoint=...;AccessKey=...;ClientEndpoint=<reverse-proxy-URL>
Konfigurowanie
ClientEndpoint
podczas wywoływania elementuAddAzureSignalR
: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>") } }; })
Gdy klient przechodzi przez zwrotny serwer proxy do usługi Azure SignalR, istnieją dwa typy żądań:
- Żądanie postu HTTP do
<reverse-proxy-URL>/client/negotiate/
, które wywołujemy jako żądanie negocjowania - Żądanie połączenia WebSocket/SSE/LongPolling w zależności od typu transportu do
<reverse-proxy-URL>/client/
, które wywołujemy jako żądanie połączenia.
Upewnij się, że zwrotny serwer proxy obsługuje oba typy transportu dla
/client/
ścieżki podrzędnej. Na przykład gdy typ transportu to WebSocket, upewnij się, że zwrotny serwer proxy obsługuje zarówno protokół HTTP, jak i protokół WebSocket dla/client/
ścieżki podrzędnej.Jeśli skonfigurowano wiele usług SignalR za zwrotnym serwerem proxy, upewnij się, że
negotiate
żądanie iconnect
żądanie z tym samymasrs_request_id
parametrem zapytania (co oznacza, że są one dla tego samego połączenia) są kierowane do tego samego wystąpienia usługi SignalR.- Żądanie postu HTTP do
W przypadku używania zwrotnego serwera proxy można dodatkowo zabezpieczyć usługę SignalR, wyłączając dostęp do sieci publicznej i używając prywatnych punktów końcowych , aby zezwolić na dostęp prywatny z zwrotnego serwera proxy do usługi SignalR za pośrednictwem sieci wirtualnej.
Następne kroki
Dowiedz się , jak pracować z usługą Application Gateway.
Dowiedz się , jak pracować z usługą API Management.
Dowiedz się więcej o elementach wewnętrznych usługi Azure SignalR.