API-gateway og reverse proxy (Nginx + Spring Cloud Gateway) · leksjon

Nginx i containerbaserte miljøer

Distribuer og administrer Nginx effektivt i Docker-containere og Kubernetes-klynger.

Leksjon 3 av 411 trinn

Nginx i containerbaserte miljøer er en gratis leksjon i API-gateway og reverse proxy (Nginx + Spring Cloud Gateway) 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 API-gateway og reverse proxy (Nginx + Spring Cloud Gateway), og fremdriften din synkroniseres mellom nettet og CoddyKit-appen. Kurset i API-gateway og reverse proxy (Nginx + Spring Cloud Gateway) inneholder totalt 4 leksjoner.

Hvorfor kjøre Nginx i containere?

Det gir mange fordeler å kjøre Nginx i containere, for eksempel Docker. Du får et konsistent miljø som sørger for at Nginx oppfører seg likt overalt, fra den bærbare datamaskinen din til produksjon.

De viktigste fordelene er:

  • Portabilitet: Flytt Nginx-applikasjoner enkelt mellom ulike systemer.
  • Isolasjon: Nginx kjører i sitt eget isolerte miljø, noe som hindrer konflikter.
  • Skalerbarhet: Start raskt nye Nginx-instanser når trafikken øker.
  • Ressurseffektivitet: Containere deler vertens OS-kjerne og bruker færre ressurser enn tradisjonelle virtuelle maskiner.

Din første Nginx-Dockerfile

En Dockerfile er et skript som inneholder instruksjoner for å bygge et Docker-image. Når du skal kjøre Nginx i en container, starter du vanligvis med et offisielt Nginx-image og legger deretter til egne konfigurasjoner eller statiske filer.

Her er en grunnleggende Dockerfile for å opprette et Nginx-image:

FROM nginx:latest
COPY ./nginx.conf /etc/nginx/nginx.conf
COPY ./html /usr/share/nginx/html
EXPOSE 80
CMD ["nginx", "-g", "daemon off;"]

Kjøre Nginx i Docker

Når du har en Dockerfile (og eventuelt nginx.conf- og html-filer), kan du bygge et image og kjøre det.

Bygg først imaget (gi det navnet my-nginx):

docker build -t my-nginx .

Kjør deretter en container fra imaget, og koble port 8080 på verten til port 80 i containeren:

docker run -d -p 8080:80 --name my-nginx-container my-nginx

Egendefinert Nginx-konfigurasjon i Docker

Du trenger ofte å bruke en egendefinert nginx.conf. I stedet for å bygge den inn i imaget med COPY (som i Dockerfile-eksempelet) kan du montere den som et volum. Da kan du endre konfigurasjonen uten å bygge imaget på nytt.

Slik monterer du en lokal ./custom-nginx.conf-fil i containeren:

docker run -d -p 8080:80 \
  --name my-nginx-custom \
  -v ./custom-nginx.conf:/etc/nginx/nginx.conf \
  nginx:latest

Nginx med Docker Compose

For applikasjoner med flere tjenester (for eksempel Nginx som reverse proxy for et backend-API) er Docker Compose svært nyttig. Det lar deg definere og kjøre Docker-applikasjoner med flere containere ved hjelp av én YAML-fil.

Dette eksempelet setter opp Nginx til å videresende forespørsler til en enkel webtjeneste:

version: '3.8'
services:
  web:
    image: nginx:latest
    ports:
      - "80:80"
    volumes:
      - ./nginx.conf:/etc/nginx/nginx.conf
  app:
    image: httpd:alpine
    expose:
      - "8080"

Grunnleggende om Nginx og Kubernetes

Kubernetes (K8s) er en åpen kildekodeplattform for containerorkestrering. Når du distribuerer Nginx i et produksjonsmiljø, tilbyr Kubernetes avanserte funksjoner som:

  • Automatisert distribusjon: Deklarativ konfigurasjon for ønsket tilstand.
  • Skalering: Skaler Nginx-instanser enkelt opp eller ned.
  • Selvreparasjon: Starter automatisk mislykkede Nginx-containere på nytt eller erstatter dem.
  • Lastbalansering: Fordeler trafikken mellom flere Nginx-instanser.

Viktige K8s-konsepter for Nginx omfatter Pods, Deployments og Services.

Distribuere Nginx i Kubernetes

I Kubernetes definerer du applikasjonene dine ved hjelp av YAML-filer. Et Deployment-objekt administrerer et sett med identiske Pods og sørger for at et angitt antall Nginx-instanser alltid kjører.

Her er en grunnleggende Kubernetes-Deployment for Nginx:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-deployment
spec:
  replicas: 3
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: nginx:latest
        ports:
        - containerPort: 80

Eksponere Nginx med K8s-tjenester

En Kubernetes-Service er en abstrakt måte å eksponere en applikasjon som kjører i et sett med Pods på. Den gir en stabil IP-adresse og et DNS-navn for Nginx-distribusjonen din, selv om Pods blir erstattet.

Vanlige Service-typer for Nginx omfatter NodePort (eksponerer Nginx på en port på tvers av alle klyngenoder) og LoadBalancer (integreres med lastbalansere i skyen).

apiVersion: v1
kind: Service
metadata:
  name: nginx-service
spec:
  selector:
    app: nginx
  ports:
    - protocol: TCP
      port: 80
      targetPort: 80
  type: NodePort

Nginx-konfigurasjon med ConfigMaps

For å administrere Nginx-konfigurasjon i Kubernetes er ConfigMaps den anbefalte metoden. En ConfigMap lagrer ikke-konfidensielle data som nøkkel-verdi-par, som deretter kan monteres som filer i Nginx-Pods.

Dette gjør at du kan oppdatere Nginx-konfigurasjonen uten å bygge Docker-imaget på nytt eller endre Deployment-YAML-filen direkte.

apiVersion: v1
kind: ConfigMap
metadata:
  name: nginx-config
data:
  nginx.conf: |
    events { worker_connections 1024; }
    http {
      server {
        listen 80;
        location / {
          return 200 'Hello from Nginx in K8s!';
        }
      }
    }
---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-configmap-deployment
spec:
  selector:
    matchLabels:
      app: nginx-configmap
  template:
    metadata:
      labels:
        app: nginx-configmap
    spec:
      containers:
      - name: nginx
        image: nginx:latest
        volumeMounts:
        - name: nginx-config-volume
          mountPath: /etc/nginx/nginx.conf
          subPath: nginx.conf
      volumes:
      - name: nginx-config-volume
        configMap:
          name: nginx-config

Test containerkunnskapene dine

Hvilke av de følgende metodene er gyldige for å administrere egendefinerte Nginx-konfigurasjonsfiler når Nginx kjører i en Docker-container eller Kubernetes-klynge?

Oppsummering: Nginx i containere

Vi har sett på hvordan Nginx kan distribueres og administreres effektivt i containeriserte miljøer, med fokus på Docker og Kubernetes.

  • Docker: Gir isolasjon og portabilitet, slik at Nginx kan kjøre konsistent.
  • Dockerfile: Brukes til å bygge egendefinerte Nginx-images, inkludert egendefinerte konfigurasjoner.
  • Docker Compose: Orkestrerer Nginx-oppsett med flere containere under utvikling.
  • Kubernetes: Tilbyr robust orkestrering for produksjon, med funksjoner som skalering og selvreparasjon.
  • Deployments og Services: Sentrale K8s-objekter for å administrere og eksponere Nginx-Pods.
  • ConfigMaps: Den standardiserte K8s-måten å administrere Nginx-konfigurasjon dynamisk på.

Det er avgjørende å beherske disse konseptene for moderne og skalerbare Nginx-distribusjoner.

Gratis å komme i gang

Lær deg API-gateway og reverse proxy (Nginx + Spring Cloud Gateway) 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
12
Leksjoner
48

Ofte stilte spørsmål

Er leksjonen «Nginx i containerbaserte miljøer» gratis?

Ja – hele teksten i «Nginx i containerbaserte miljøer» 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 API-gateway og reverse proxy (Nginx + Spring Cloud Gateway)-kurset, kan du oppgradere til CoddyKit PRO. Kurset i API-gateway og reverse proxy (Nginx + Spring Cloud Gateway) inneholder totalt 4 leksjoner.

Hva lærer jeg i «Nginx i containerbaserte miljøer»?

Distribuer og administrer Nginx effektivt i Docker-containere og Kubernetes-klynger. Du øver på API-gateway og reverse proxy (Nginx + Spring Cloud Gateway) 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 API-gateway og reverse proxy (Nginx + Spring Cloud Gateway)?

Ingen tidligere erfaring er nødvendig. API-gateway og reverse proxy (Nginx + Spring Cloud Gateway) 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 «Nginx i containerbaserte miljøer»?

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 API-gateway og reverse proxy (Nginx + Spring Cloud Gateway)-leksjonen?

Ja. Alle API-gateway og reverse proxy (Nginx + Spring Cloud Gateway)-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

  1. Nginx-logging og måledata
  2. Ytelsesjustering av Nginx
  3. Nginx i containerbaserte miljøer
  4. Nedlastingsfrie omlastinger og konfigurasjonstesting
← Tilbake til API-gateway og reverse proxy (Nginx + Spring Cloud Gateway)