Listenerregler og stibasert ruting
Skriv listenerregler på ALB-en for å rute forespørsler til ulike målgrupper basert på host-headere, st mønstre eller spørringsstrenger.
Listenerregler og stibasert ruting er en gratis leksjon i Cloud & IT Cert Prep på CoddyKit. Dette er leksjon 3 av 4. Du kan lese hele leksjonen gratis nedenfor – og deretter øve praktisk i nettleseren med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt. Den er en del av læringsløpet i Cloud & IT Cert Prep, og fremdriften din synkroniseres mellom nettet og CoddyKit-appen. Kurset i Cloud & IT Cert Prep inneholder totalt 4 leksjoner.
ALB-lyttere forklart
En ALB-lytter er en prosess som kontrollerer tilkoblingsforespørsler ved hjelp av en protokoll og port De angir (f.eks. HTTP på port 80 eller HTTPS på port 443). Hver lytter har én eller flere regler som avgjør hvor forespørsler skal videresendes, basert på innholdet deres.
En lytter må ha en standardregel (reservehandlingen når ingen annen regel samsvarer), og kan ha opptil 100 ekstra regler. Regler evalueres i prioritetsrekkefølge (laveste nummer = høyeste prioritet). Når en forespørsel samsvarer med betingelsen i en regel, brukes den tilhørende handlingen, og ingen flere regler evalueres.
# 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/def456Regelbetingelser
Lytterregler samsvarer med forespørsler basert på betingelser. De kan kombinere flere betingelser i én regel (alle betingelsene må samsvare for at regelen skal brukes). Tilgjengelige betingelsestyper:
- host-header: samsvarer med HTTP-hodet
Host(f.eks.api.example.com) - path-pattern: samsvarer med URL-banen (f.eks.
/api/*,/images/*.jpg) - http-header: samsvarer med navnet på et HTTP-hode og verdimønsteret
- http-request-method: samsvarer med HTTP-metoder (GET, POST, DELETE osv.)
- query-string: samsvarer med nøkkel-verdi-par i spørringsstrengen
- source-ip: samsvarer med klientens IP-CIDR-områder
Bane-basert ruting
Bane-basert ruting sender forespørsler til ulike målgrupper basert på URL-banen. Dette er det vanligste rutingmønsteret for mikrotjenester bak én ALB. Eksempel på regler på én ALB:
- Bane er
/api/*→ målgruppe: api-service - Bane er
/images/*→ målgruppe: image-processor - Bane er
/admin/*→ målgruppe: admin-app - Standard → målgruppe: frontend-app
Dette gjør at én ALB kan være inngangspunkt for flere separate tjenester uten at det kreves flere lastbalanserere, noe som reduserer kostnader og DNS-kompleksitet.
# 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/xyz789Vertsbasert ruting
Vertsbasert ruting ruter forespørsler basert på HTTP-Host-hodet, slik at flere domenenavn (virtuelle verter) kan leveres fra én ALB. Eksempel:
- Vert er
api.example.com→ målgruppe for api-service - Vert er
admin.example.com→ målgruppe for admin-app - Vert er
www.example.com→ målgruppe for frontend
Hvert domenenavn har sin egen CNAME- eller ALIAS-post som peker til det samme ALB-DNS-navnet, men ALB-en ruter hvert domenenavn til riktig backend basert på vertshodet. Vertsbasert ruting egner seg godt for SaaS-løsninger med flere leietakere eller monolittiske applikasjoner som deles opp i mikrotjenester.
# 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"}]'Regelhandlinger
Når betingelsene i en regel samsvarer, utfører ALB-en én av disse handlingene:
- forward: videresender forespørselen til én eller flere målgrupper (med valgfrie vekter)
- redirect: returnerer en HTTP-viderekobling (301 eller 302) til en ny URL; nyttig for viderekobling fra HTTP til HTTPS
- fixed-response: returnerer et statisk HTTP-svar med angitt statuskode, innholdstype og brødtekst – nyttig for vedlikeholdssider eller enkle helsesjekksvar
- authenticate-cognito: autentiserer brukere via en Cognito User Pool før videresending
- authenticate-oidc: autentiserer brukere via en hvilken som helst OIDC-kompatibel identitetsleverandør
# 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"}}]'Mønster for viderekobling fra HTTP til HTTPS
Det vanligste lytterregel-mønsteret er å viderekoble HTTP til HTTPS:
- Opprett en HTTP-lytter på port 80 med én regel: viderekoble all trafikk (
/*) til HTTPS med statuskoden 301 - Opprett en HTTPS-lytter på port 443 med de faktiske rutingreglene Deres, som peker til målgrupper
Dette sikrer at brukere som skriver inn http:// eller følger gamle HTTP-lenker, transparent viderekobles til HTTPS uten endringer på applikasjonsnivå. Viderekoblingen håndteres utelukkende på lastbalanseringslaget.
Handling for fast svar
Handlingen for fast svar returnerer et statisk HTTP-svar fra ALB-en uten å videresende forespørselen til noe mål. Bruk den til å:
- returnere en vedlikeholdsside med status 503 for bestemte baner under vedlikehold
- tilby et lett helsesjekkendepunkt direkte fra ALB-en (returnerer 200 OK umiddelbart uten belastning på backend)
- blokkere bestemte baner med svaret 403 Forbidden
Faste svar er nyttige for midlertidig å ta baner ut av drift uten å endre applikasjonskoden eller distribuere på nytt, ved å justere lytterreglene dynamisk.
# 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>"}}]'ALB-autentisering med Cognito
ALB-ens authenticate-cognito-handling integreres med Amazon Cognito User Pools for å håndtere brukerautentisering før forespørsler videresendes til applikasjonen Deres. Når en uautentisert bruker når en beskyttet lytterregel, viderekobler ALB-en brukeren til det Cognito-vertsbaserte brukergrensesnittet for pålogging. Etter vellykket autentisering angir ALB-en en kryptert informasjonskapsel og videresender forespørselen med topptekster som inneholder brukeridentiteten.
Dette flytter all autentiseringslogikk ut av applikasjonen. Backend-mottaket mottar topptekstene X-Amzn-Oidc-Identity, X-Amzn-Oidc-Data og X-Amzn-Oidc-Access-Token med den autentiserte brukerens claims.
Ruting basert på spørringsstreng og topptekster
ALB-lytterregler kan rute basert på parametere i spørringsstrengen og HTTP-topptekster, noe som muliggjør finkornet ruting av forespørsler:
- Rute mobile klienter ved å oppdage toppteksten
User-Agent: *Mobile*og sende dem til en backend optimalisert for mobile enheter - Rute premium-API-forespørsler ved å kontrollere den egendefinerte toppteksten
X-API-Tier: premiumog sende dem til en raskere målgruppe - Rute varianter i A/B-tester ved å lese parameteren
?variant=betafra spørringsstrengen
Ruting basert på topptekster gjør det mulig å implementere funksjonsflagg og trafikksplitting på infrastrukturnivå uten å endre applikasjonskoden.
Regelprioritet og evalueringsrekkefølge
Reglene evalueres i stigende prioritetsrekkefølge. Regler med lavere prioritetsnummer evalueres først. Handlingen til den første regelen som samsvarer, utføres, og ingen flere regler evalueres. Standardregelen har ikke noe prioritetsnummer og evalueres alltid sist som en generell oppsamlingsregel.
Beste praksis: Tildel prioritetsnumre med intervaller på 10 (10, 20, 30 ...) i stedet for fortløpende heltall. Da blir det mulig å sette inn nye regler mellom eksisterende regler uten å nummerere dem på nytt. Mer spesifikke regler (for eksempel bane + vertstopptekst) bør ha lavere numre (høyere prioritet) enn generelle regler.
# 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 tableLytterregler for mikrotjenester
Én ALB kan fungere som inngang til en hel mikrotjenesteplattform ved hjelp av lytterregler. Her er et realistisk eksempel som kombinerer alle tre betingelsestypene:
- Prioritet 10: Host=
api.example.com+ Path=/v2/*→ api-v2-målgruppe - Prioritet 20: Host=
api.example.com+ Path=/v1/*→ api-v1-målgruppe - Prioritet 30: Host=
auth.example.com→ auth-service-målgruppe - Prioritet 40: Host=
www.example.com+ Path=/static/*→ CloudFront-viderekobling - Standard: Host=
www.example.com→ frontend-målgruppe
Dette designet reduserer kostnadene ved å eliminere behovet for separate lastbalanserere for hver tjeneste.
Kort kontroll
Test forståelsen Deres av AWS Solutions Architect-konsepter (SAA-C03) fra denne leksjonen.
Oppsummering av leksjonen
I denne leksjonen har De lært at lytterregler ruter forespørsler basert på vert, bane, topptekster, metoder og spørringsstrenger, at regler evalueres i prioritetsrekkefølge og at den første regelen som samsvarer, vinner, samt at handlinger omfatter videresending, viderekobling, fast svar og Cognito-autentisering. Ruting basert på bane og vert gjør det mulig for én ALB å fungere som inngang til flere mikrotjenester. Neste tema er SSL-terminering og klebrige økter.
Lær deg Cloud & IT Cert Prep med en AI-veileder – gratis
Skriv og kjør ekte kode i nettleseren, få umiddelbar hjelp fra en AI-veileder som er tilgjengelig døgnet rundt, og fortsett der du slapp – på nettet eller i appen.
- Kurs
- 150
- Leksjoner
- 600
Ofte stilte spørsmål
Er leksjonen «Listenerregler og stibasert ruting» gratis?
Ja – hele teksten i «Listenerregler og stibasert ruting» er gratis å lese her på nettet. For å øve interaktivt med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt, og for å låse opp resten av Cloud & IT Cert Prep-kurset, kan du oppgradere til CoddyKit PRO. Kurset i Cloud & IT Cert Prep inneholder totalt 4 leksjoner.
Hva lærer jeg i «Listenerregler og stibasert ruting»?
Skriv listenerregler på ALB-en for å rute forespørsler til ulike målgrupper basert på host-headere, st mønstre eller spørringsstrenger. Du øver på Cloud & IT Cert Prep med praktisk kode som du kjører direkte i nettleseren, mens en AI-veileder som er tilgjengelig døgnet rundt, svarer på spørsmålene dine mens du jobber deg gjennom leksjonen.
Trenger jeg erfaring for å begynne med Cloud & IT Cert Prep?
Ingen tidligere erfaring er nødvendig. Cloud & IT Cert Prep på CoddyKit er lagt opp for både nybegynnere og viderekomne, så De kan begynne her eller helt fra start og lære i Deres eget tempo. Dette er leksjon 3 av 4.
Hvor lang tid tar leksjonen «Listenerregler og stibasert ruting»?
De fleste CoddyKit-leksjoner tar omtrent 5–10 minutter. Hver leksjon er kort og interaktiv, slik at De gjør jevne fremskritt og kan fortsette akkurat der De slapp – både på nettet og i appen.
Kan jeg skrive og kjøre kode i denne Cloud & IT Cert Prep-leksjonen?
Ja. Alle Cloud & IT Cert Prep-leksjoner har en innebygd kodeeditor, slik at De kan skrive og kjøre ekte kode direkte i nettleseren og få umiddelbar tilbakemelding fra AI – uten lokal konfigurering.
Alle leksjonene i dette kurset
- ALB vs NLB vs GLB: Når bør De bruke hva
- Målgrupper og helsesjekker
- Listenerregler og stibasert ruting
- SSL-terminering og klebrige økter