Reguły listenera i routing na podstawie ścieżki
Napiszą reguły listenera w ALB, aby kierować żądania do różnych grup docelowych na podstawie nagłówków hosta, wzorców ścieżek lub ciągów zapytań.
Reguły listenera i routing na podstawie ścieżki to bezpłatna lekcja AWS Solutions Architect na CoddyKit. To lekcja 3 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej AWS Solutions Architect, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs AWS Solutions Architect zawiera 4 lekcji w sumie.
Wyjaśnienie odbiorników ALB
Odbiornik ALB to proces, który sprawdza żądania połączenia przy użyciu określonego protokołu i portu (np. HTTP na porcie 80 lub HTTPS na porcie 443). Każdy odbiornik ma co najmniej jedną regułę określającą, dokąd przekazywać żądania na podstawie ich zawartości.
Odbiornik musi mieć regułę domyślną (akcję stosowaną, gdy żadna inna reguła nie pasuje) i może mieć maksymalnie 100 dodatkowych reguł. Reguły są oceniane według priorytetu (niższy numer = wyższy priorytet). Gdy żądanie pasuje do warunku reguły, stosowana jest odpowiednia akcja, a pozostałe reguły nie są już oceniane.
# Create an HTTP listener on port 80
aws elbv2 create-listener \
--load-balancer-arn arn:aws:elasticloadbalancing:us-east-1:123456789:loadbalancer/app/my-alb/abc123 \
--protocol HTTP \
--port 80 \
--default-actions Type=forward,TargetGroupArn=arn:aws:elasticloadbalancing:us-east-1:123456789:targetgroup/default-tg/def456Warunki reguł
Reguły odbiornika dopasowują żądania na podstawie warunków. W jednej regule można połączyć wiele warunków (wszystkie warunki muszą być spełnione, aby reguła została zastosowana). Dostępne typy warunków:
- host-header: dopasowuje nagłówek HTTP
Host(np.api.example.com) - path-pattern: dopasowuje ścieżkę URL (np.
/api/*,/images/*.jpg) - http-header: dopasowuje dowolną nazwę nagłówka HTTP i wzorzec jego wartości
- http-request-method: dopasowuje metody HTTP (GET, POST, DELETE itd.)
- query-string: dopasowuje pary klucz-wartość w ciągu zapytania
- source-ip: dopasowuje zakresy CIDR adresów IP klientów
Routing na podstawie ścieżki
Routing na podstawie ścieżki kieruje żądania do różnych grup docelowych w zależności od ścieżki URL. Jest to najczęstszy wzorzec routingu dla mikrousług działających za jednym ALB. Przykładowe reguły na jednym ALB:
- Ścieżka to
/api/*→ grupa docelowa: api-service - Ścieżka to
/images/*→ grupa docelowa: image-processor - Ścieżka to
/admin/*→ grupa docelowa: admin-app - Domyślnie → grupa docelowa: frontend-app
Pozwala to jednemu ALB obsługiwać wiele odrębnych usług bez konieczności używania wielu modułów równoważenia obciążenia, co zmniejsza koszty i złożoność DNS.
# Create a path-based routing rule
aws elbv2 create-rule \
--listener-arn arn:aws:elasticloadbalancing:us-east-1:123456789:listener/app/my-alb/abc123/lis456 \
--priority 10 \
--conditions Field=path-pattern,Values='/api/*' \
--actions Type=forward,TargetGroupArn=arn:aws:elasticloadbalancing:us-east-1:123456789:targetgroup/api-service/xyz789Routing na podstawie hosta
Routing na podstawie hosta kieruje żądania na podstawie nagłówka HTTP Host, umożliwiając obsługę wielu nazw domen (hostów wirtualnych) za pomocą jednego ALB. Przykład:
- Host to
api.example.com→ grupa docelowa api-service - Host to
admin.example.com→ grupa docelowa admin-app - Host to
www.example.com→ grupa docelowa frontend
Każda nazwa domeny ma rekord CNAME lub ALIAS wskazujący na tę samą nazwę DNS ALB, ale ALB kieruje żądania do odpowiedniego zaplecza na podstawie nagłówka hosta. Routing na podstawie hosta doskonale sprawdza się w wielodzierżawnych usługach SaaS lub w aplikacjach monolitycznych dzielonych na mikrousługi.
# Create a host-based routing rule
aws elbv2 create-rule \
--listener-arn arn:aws:elasticloadbalancing:us-east-1:123456789:listener/app/my-alb/abc123/lis456 \
--priority 5 \
--conditions '[{"Field":"host-header","HostHeaderConfig":{"Values":["api.example.com"]}}]' \
--actions '[{"Type":"forward","TargetGroupArn":"arn:aws:elasticloadbalancing:us-east-1:123456789:targetgroup/api-service/xyz789"}]'Akcje reguł
Gdy warunki reguły zostaną spełnione, ALB wykonuje jedną z następujących akcji:
- forward: przekazuje żądanie do jednej lub większej liczby grup docelowych (opcjonalnie z użyciem wag)
- redirect: zwraca przekierowanie HTTP (301 lub 302) do nowego adresu URL; przydatne do przekierowań z HTTP do HTTPS
- fixed-response: zwraca statyczną odpowiedź HTTP z określonym kodem stanu, typem zawartości i treścią — przydatne w przypadku stron konserwacji lub prostych odpowiedzi kontroli stanu
- authenticate-cognito: uwierzytelnia użytkowników za pomocą Cognito User Pool przed przekazaniem żądania
- authenticate-oidc: uwierzytelnia użytkowników za pomocą dowolnego dostawcy tożsamości zgodnego z OIDC
# Create a redirect rule: HTTP to HTTPS
aws elbv2 create-rule \
--listener-arn arn:aws:elasticloadbalancing:us-east-1:123456789:listener/app/my-alb/abc123/http80 \
--priority 1 \
--conditions '[{"Field":"path-pattern","PathPatternConfig":{"Values":["/*"]}}]' \
--actions '[{"Type":"redirect","RedirectConfig":{"Protocol":"HTTPS","Port":"443","StatusCode":"HTTP_301"}}]'Wzorzec przekierowania z HTTP do HTTPS
Najczęściej stosowany wzorzec reguły odbiornika polega na przekierowaniu HTTP do HTTPS:
- Utwórz odbiornik HTTP na porcie 80 z jedną regułą: przekieruj cały ruch (
/*) do HTTPS, używając kodu stanu 301 - Utwórz odbiornik HTTPS na porcie 443 z właściwymi regułami routingu kierującymi ruch do grup docelowych
Dzięki temu użytkownicy, którzy wpiszą http:// lub otworzą stare łącza HTTP, zostaną w sposób niewidoczny przekierowani do HTTPS bez żadnych zmian na poziomie aplikacji. Przekierowanie jest obsługiwane w całości na warstwie modułu równoważenia obciążenia.
Akcja fixed-response
Akcja fixed-response zwraca statyczną odpowiedź HTTP z ALB bez przekazywania żądania do żadnego celu. Można jej użyć do:
- zwracania strony konserwacji 503 dla określonych ścieżek podczas prac konserwacyjnych
- udostępnienia lekkiego punktu końcowego kontroli stanu bezpośrednio z ALB (zwraca 200 OK natychmiast, bez obciążania zaplecza)
- blokowania określonych ścieżek za pomocą odpowiedzi 403 Forbidden
Odpowiedzi stałe są przydatne do tymczasowego wyłączania ścieżek z obsługi bez modyfikowania kodu aplikacji lub ponownego wdrażania — wystarczy dynamicznie dostosować reguły odbiornika.
# Return 503 maintenance page for a specific path
aws elbv2 create-rule \
--listener-arn arn:aws:elasticloadbalancing:us-east-1:123456789:listener/app/my-alb/abc123/lis456 \
--priority 20 \
--conditions '[{"Field":"path-pattern","PathPatternConfig":{"Values":["/checkout/*"]}}]' \
--actions '[{"Type":"fixed-response","FixedResponseConfig":{"StatusCode":"503","ContentType":"text/html","MessageBody":"<h1>Maintenance</h1>"}}]'Uwierzytelnianie ALB za pomocą Cognito
Akcja authenticate-cognito modułu ALB integruje się z Amazon Cognito User Pools, aby obsługiwać uwierzytelnianie użytkowników przed przekazaniem żądań do aplikacji. Gdy nieuwierzytelniony użytkownik dotrze do chronionej reguły odbiornika, ALB przekierowuje go do interfejsu logowania hostowanego przez Cognito. Po pomyślnym uwierzytelnieniu ALB ustawia zaszyfrowane ciasteczko i przekazuje żądanie wraz z nagłówkami tożsamości użytkownika.
Cała logika uwierzytelniania zostaje w ten sposób przeniesiona poza aplikację. Zaplecze otrzymuje nagłówki X-Amzn-Oidc-Identity, X-Amzn-Oidc-Data i X-Amzn-Oidc-Access-Token zawierające dane uwierzytelnionego użytkownika.
Routing na podstawie parametrów zapytania i nagłówków
Reguły listenera ALB mogą kierować ruch na podstawie parametrów ciągu zapytania i nagłówków HTTP, umożliwiając precyzyjne trasowanie żądań:
- Kierowanie klientów mobilnych przez wykrywanie nagłówka
User-Agent: *Mobile*do backendu zoptymalizowanego pod kątem urządzeń mobilnych - Kierowanie żądań premium API przez sprawdzanie niestandardowego nagłówka
X-API-Tier: premiumdo szybszej grupy docelowej - Kierowanie wariantów testów A/B przez odczytywanie parametru ciągu zapytania
?variant=beta
Routing na podstawie nagłówków umożliwia implementowanie przełączników funkcji i podziału ruchu na poziomie infrastruktury bez modyfikowania kodu aplikacji.
Priorytet reguł i kolejność ewaluacji
Reguły są oceniane w kolejności rosnącego priorytetu. Reguły o niższych numerach priorytetu są oceniane jako pierwsze. Stosowana jest akcja pierwszej pasującej reguły, a pozostałe reguły nie są już oceniane. Reguła domyślna nie ma numeru priorytetu i jest zawsze oceniana na końcu jako reguła obsługująca wszystkie pozostałe przypadki.
Dobra praktyka: należy przypisywać numery priorytetów z odstępami co 10 (10, 20, 30...), zamiast używać kolejnych liczb całkowitych. Pozostawia to miejsce na dodawanie nowych reguł między istniejącymi bez konieczności zmiany ich numeracji. Bardziej szczegółowe reguły (np. łączące ścieżkę i nagłówek hosta) powinny mieć niższe numery (wyższy priorytet) niż reguły ogólne.
# List rules for a listener (shows priorities)
aws elbv2 describe-rules \
--listener-arn arn:aws:elasticloadbalancing:us-east-1:123456789:listener/app/my-alb/abc123/lis456 \
--query 'Rules[*].{Priority:Priority,Conditions:Conditions[0].Field,Actions:Actions[0].Type}' \
--output tableReguły listenera dla mikrousług
Pojedynczy ALB może obsługiwać całą platformę mikrousług za pomocą reguł listenera. Przykład z życia rzeczywistego, łączący wszystkie trzy typy warunków:
- Priorytet 10: Host=
api.example.com+ Path=/v2/*→ grupa docelowa api-v2 - Priorytet 20: Host=
api.example.com+ Path=/v1/*→ grupa docelowa api-v1 - Priorytet 30: Host=
auth.example.com→ grupa docelowa auth-service - Priorytet 40: Host=
www.example.com+ Path=/static/*→ przekierowanie do CloudFront - Domyślna: Host=
www.example.com→ grupa docelowa frontend
Taka architektura obniża koszty, ponieważ eliminuje potrzebę używania osobnych load balancerów dla poszczególnych usług.
Szybkie sprawdzenie
Sprawdź swoją wiedzę na temat zagadnień AWS Solutions Architect (SAA-C03) z tej lekcji.
Podsumowanie lekcji
W tej lekcji dowiedzieli się Państwo, że: reguły listenera kierują żądania na podstawie hosta, ścieżki, nagłówków, metod i ciągów zapytania, reguły są oceniane według priorytetu, a decydujące znaczenie ma pierwsze dopasowanie, oraz że akcje obejmują przekierowanie, przekazywanie, fixed-response i uwierzytelnianie Cognito. Routing na podstawie ścieżki i hosta umożliwia pojedynczemu ALB obsługę wielu mikrousług. Następnie omówimy terminowanie SSL oraz sesje trwałe.
Często zadawane pytania
Czy lekcja „Reguły listenera i routing na podstawie ścieżki” jest bezpłatna?
Tak — pełny tekst „Reguły listenera i routing na podstawie ścieżki” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu AWS Solutions Architect, przejdź na CoddyKit PRO. Kurs AWS Solutions Architect zawiera 4 lekcji w sumie.
Co nauczysz się w „Reguły listenera i routing na podstawie ścieżki”?
Napiszą reguły listenera w ALB, aby kierować żądania do różnych grup docelowych na podstawie nagłówków hosta, wzorców ścieżek lub ciągów zapytań. Ćwiczysz AWS Solutions Architect z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.
Czy potrzebuję doświadczenia, aby zacząć AWS Solutions Architect?
Nie wymagamy żadnego doświadczenia. AWS Solutions Architect w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 3 z 4.
Ile czasu zajmuje lekcja „Reguły listenera i routing na podstawie ścieżki”?
Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.
Czy mogę pisać i uruchamiać kod w tej lekcji AWS Solutions Architect?
Tak. Każda lekcja AWS Solutions Architect zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.
Wszystkie lekcje w tym kursie
- ALB a NLB i GLB: kiedy używać którego rozwiązania
- Grupy docelowe i kontrole stanu
- Reguły listenera i routing na podstawie ścieżki
- Terminacja SSL i sesje sticky