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

Nginx i containeriserede miljøer

Implementér og administrér Nginx effektivt i Docker-containere og Kubernetes-klynger.

Lektion 3 af 411 trin

Nginx i containeriserede miljøer er en gratis API-gateway og reverse proxy (Nginx + Spring Cloud Gateway)-lektion på CoddyKit. Dette er lektion 3 af 4. Du kan læse hele lektionen gratis nedenfor — og derefter øve dig praktisk i browseren med en indbygget kodeeditor og en AI-vejleder, der er tilgængelig døgnet rundt. Den er en del af læringsforløbet i API-gateway og reverse proxy (Nginx + Spring Cloud Gateway), og dine fremskridt synkroniseres på tværs af nettet og CoddyKit-appen. API-gateway og reverse proxy (Nginx + Spring Cloud Gateway)-kurset indeholder 4 lektioner i alt.

Hvorfor køre Nginx i containere?

Det giver mange fordele at køre Nginx i containere som Docker. Det sikrer et ensartet miljø, så Nginx opfører sig på samme måde overalt – fra din bærbare computer til produktion.

De vigtigste fordele omfatter:

  • Flytbarhed: Flyt nemt Nginx-applikationer mellem forskellige systemer.
  • Isolering: Nginx kører i sit eget isolerede miljø, så konflikter undgås.
  • Skalerbarhed: Start hurtigt nye Nginx-instanser, efterhånden som trafikken vokser.
  • Ressourceeffektivitet: Containere deler værtsoperativsystemets kerne og bruger færre ressourcer end traditionelle virtuelle maskiner.

Din første Nginx-Dockerfile

En Dockerfile er et script, der indeholder instruktioner til at bygge et Docker-image. Når du vil køre Nginx i en container, starter du typisk med et officielt Nginx-image og tilføjer derefter dine egne konfigurationer eller statiske filer.

Her er en grundlæggende Dockerfile til at oprette 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;"]

Kørsel af Nginx i Docker

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

Byg først imaget (giv det navnet my-nginx):

docker build -t my-nginx .

Kør derefter en container fra dit image, og forbind port 8080 på din vært med port 80 i containeren:

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

Brugerdefineret Nginx-konfiguration i Docker

Du får ofte brug for en brugerdefineret nginx.conf. I stedet for at indbygge den i imaget med COPY (som i Dockerfile-eksemplet) kan du montere den som en diskenhed. Det gør det muligt at ændre konfigurationen uden at bygge imaget igen.

Sådan 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

Til applikationer med flere tjenester (f.eks. Nginx som reverse proxy for en backend-API) er Docker Compose uvurderlig. Den gør det muligt at definere og køre Docker-applikationer med flere containere ved hjælp af én YAML-fil.

Dette eksempel konfigurerer Nginx til at videresende anmodninger til en simpel 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"

Grundlæggende om Nginx og Kubernetes

Kubernetes (K8s) er en open source-platform til containerorkestrering. Når du implementerer Nginx i et produktionsmiljø, tilbyder Kubernetes avancerede funktioner som:

  • Automatiseret implementering: Deklarativ konfiguration af den ønskede tilstand.
  • Skalering: Skaler nemt antallet af Nginx-instanser op eller ned.
  • Selvheling: Genstart eller erstat automatisk Nginx-containere, der er gået ned.
  • Belastningsfordeling: Fordel trafik på flere Nginx-instanser.

Vigtige K8s-begreber for Nginx omfatter Pods, Deployments og Services.

Implementering af Nginx i Kubernetes

I Kubernetes definerer du dine applikationer ved hjælp af YAML-filer. Et Deployment-objekt administrerer et sæt identiske Pods og sikrer, at et angivet antal Nginx-instanser altid kører.

Her er et grundlæggende Kubernetes-Deployment til 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

Eksponering af Nginx med K8s-tjenester

En Kubernetes-Service er en abstrakt måde at eksponere en applikation, der kører på et sæt Pods. Den giver en stabil IP-adresse og DNS-navn til din Nginx-implementering, selv hvis Pods udskiftes.

Almindelige Service-typer til Nginx omfatter NodePort (eksponerer Nginx på en port på tværs af alle klyngens noder) og LoadBalancer (integreres med cloud-baserede belastningsfordelere).

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

Nginx-konfiguration med ConfigMaps

Hvis du vil administrere Nginx-konfiguration i Kubernetes, er ConfigMaps den foretrukne metode. En ConfigMap gemmer ikke-fortrolige data som nøgleværdi-par, der derefter kan monteres som filer i dine Nginx-Pods.

Det gør det muligt at opdatere Nginx-konfigurationen uden at bygge dit Docker-image igen eller ændre 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 din viden om containere

Hvilke af følgende er gyldige måder at administrere brugerdefinerede Nginx-konfigurationsfiler på, når Nginx kører i en Docker-container eller en Kubernetes-klynge?

Opsummering: Nginx i containere

Vi har undersøgt, hvordan Nginx effektivt kan implementeres og administreres i containeriserede miljøer med fokus på Docker og Kubernetes.

  • Docker: Giver isolering og flytbarhed, så Nginx kan køre ensartet.
  • Dockerfile: Bruges til at bygge brugerdefinerede Nginx-images, herunder med brugerdefinerede konfigurationer.
  • Docker Compose: Orkestrerer Nginx-opsætninger med flere containere til udvikling.
  • Kubernetes: Tilbyder robust orkestrering til produktion med funktioner som skalering og selvheling.
  • Deployments og Services: Centrale K8s-objekter til at administrere og eksponere Nginx-Pods.
  • ConfigMaps: K8s' standardmetode til dynamisk administration af Nginx-konfiguration.

Det er afgørende at beherske disse begreber for at kunne implementere moderne og skalerbare Nginx-løsninger.

Gratis at komme i gang

Lær API-gateway og reverse proxy (Nginx + Spring Cloud Gateway) med en AI-underviser — gratis

Skriv og kør rigtig kode i din browser, få øjeblikkelig hjælp fra en AI-underviser døgnet rundt, og fortsæt, hvor du slap, på web eller i appen.

Kurser
12
Lektioner
48

Ofte stillede spørgsmål

Er lektionen “Nginx i containeriserede miljøer” gratis?

Ja — hele teksten til “Nginx i containeriserede miljøer” kan læses gratis her på nettet. Hvis du vil øve dig interaktivt med en indbygget kodeeditor og en AI-vejleder døgnet rundt og få adgang til resten af API-gateway og reverse proxy (Nginx + Spring Cloud Gateway)-kurset, skal du opgradere til CoddyKit PRO. API-gateway og reverse proxy (Nginx + Spring Cloud Gateway)-kurset indeholder 4 lektioner i alt.

Hvad lærer jeg i “Nginx i containeriserede miljøer”?

Implementér og administrér Nginx effektivt i Docker-containere og Kubernetes-klynger. Du øver dig i API-gateway og reverse proxy (Nginx + Spring Cloud Gateway) med praktisk kode, som du kører direkte i browseren, og en AI-vejleder døgnet rundt besvarer dine spørgsmål, mens du arbejder dig gennem lektionen.

Skal jeg have erfaring for at begynde på API-gateway og reverse proxy (Nginx + Spring Cloud Gateway)?

Der kræves ingen tidligere erfaring. API-gateway og reverse proxy (Nginx + Spring Cloud Gateway) på CoddyKit er tilrettelagt for både begyndere og øvede, så du kan starte her eller fra begyndelsen og lære i dit eget tempo. Dette er lektion 3 af 4.

Hvor lang tid tager lektionen “Nginx i containeriserede miljøer”?

De fleste CoddyKit-lektioner tager cirka 5–10 minutter. Hver lektion er kort og interaktiv, så du gør løbende fremskridt og kan fortsætte, hvor du slap – på både web og app.

Kan jeg skrive og køre kode i denne API-gateway og reverse proxy (Nginx + Spring Cloud Gateway)-lektion?

Ja. Alle API-gateway og reverse proxy (Nginx + Spring Cloud Gateway)-lektioner har en indbygget kodeeditor, så du kan skrive og køre rigtig kode direkte i din browser og få øjeblikkelig feedback fra AI – uden lokal opsætning.

Alle lektioner i dette kursus

  1. Nginx-logning og målepunkter
  2. Ydeevneoptimering af Nginx
  3. Nginx i containeriserede miljøer
  4. Reloads uden nedetid og test af konfiguration
← Tilbage til API-gateway og reverse proxy (Nginx + Spring Cloud Gateway)