Nginx i containeriserede miljøer
Implementér og administrér Nginx effektivt i Docker-containere og Kubernetes-klynger.
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-nginxBrugerdefineret 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:latestNginx 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: 80Eksponering 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: NodePortNginx-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-configTest 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.
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
- Nginx-logning og målepunkter
- Ydeevneoptimering af Nginx
- Nginx i containeriserede miljøer
- Reloads uden nedetid og test af konfiguration