VPS · Guide

nginx som reverse proxy: guide

Opdateret October 11, 2026 5 min. læsning

På denne side
  1. Hvad en reverse proxy gør
  2. Trin 1: Installer nginx
  3. Trin 2: Opret proxy-server-blokken
  4. Headers og den afsluttende skråstreg
  5. WebSockets
  6. Trin 3: Gratis HTTPS med Certbot
  7. Sådan løser du fejl 502, 504 og 413
  8. Kør det på en HytHost VPS
  9. FAQ

En reverse proxy står foran dine applikationer og sender besøgendes forespørgsler videre til dem. Med nginx foran bliver en Node.js-app, en Docker-container eller et dashboard, der kører på en port, til https://app.example.com – med HTTPS, korrekte headers og ét sted at styre det hele fra.

Denne guide sætter nginx op som reverse proxy på Ubuntu, trin for trin: server-blokken, headers, WebSockets, gratis HTTPS og de fejl, du højst sandsynligt møder.

Hvad en reverse proxy gør

  • Ét offentligt indgangspunkt. nginx lytter på port 80 og 443 og sender hvert domæne eller hver sti videre til den rigtige app, så selve apps aldrig står direkte ud mod internettet.
  • HTTPS ét sted. nginx håndterer certifikaterne; apps bag den kan tale almindelig HTTP på localhost.
  • Flere apps på én server. app.example.com, api.example.com og example.com/blog kan hver gå til sin egen tjeneste.
  • Ekstra: komprimering, caching, upload-grænser og adgangsregler, uden at røre appen.

Trin 1: Installer nginx

sudo apt update
sudo apt install nginx

Åbn http://your-server-ip, og du bør se nginx' velkomstside. Bruger du ufw, så tillad webtrafik med sudo ufw allow 'Nginx Full'.

Sørg for, at din app kører og kan nås på selve serveren, for eksempel med curl http://127.0.0.1:3000. Fejler det, fejler nginx også.

Kør nginx og dine apps med fuld root: HytHost KVM VPS-pakker fra €2.92/md.

Se VPS-pakker

Trin 2: Opret proxy-server-blokken

På Ubuntu får hvert site en fil i /etc/nginx/sites-available/, som aktiveres med et link i sites-enabled. Opret /etc/nginx/sites-available/app.example.com:

server {
    listen 80;
    server_name app.example.com;

    location / {
        proxy_pass http://127.0.0.1:3000;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
}

Aktivér den, test konfigurationen og genindlæs:

sudo ln -s /etc/nginx/sites-available/app.example.com /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl reload nginx

Peg domænets A-record på din server, så viser http://app.example.com nu din app. Kør altid nginx -t før en genindlæsning: den fanger tastefejl, før de lægger sitet ned.

Headers og den afsluttende skråstreg

  • Host sender det domæne, den besøgende bad om. Uden den sender nginx adressen fra proxy_pass, og apps, der bygger links ud fra host, går i stykker.
  • X-Real-IP og X-Forwarded-For sender den besøgendes IP-adresse. Uden dem ser hver forespørgsel ud til at komme fra 127.0.0.1.
  • X-Forwarded-Proto fortæller appen, om den besøgende brugte HTTPS, så den ikke omdirigerer i ring.

Ubuntus nginx-pakke har disse linjer i /etc/nginx/proxy_params, så include proxy_params; er en genvej.

Den afsluttende skråstreg betyder noget. For en app under en sti:

location /app/ {
    proxy_pass http://127.0.0.1:3000/;
}

Med skråstregen efter porten når /app/login frem til appen som /login. Uden den modtager appen hele /app/login.

WebSockets

Chat-apps, live-dashboards og mange admin-paneler bruger WebSockets, som kræver to ekstra headers. Tilføj dette map én gang inde i http-blokken, for eksempel i en ny fil /etc/nginx/conf.d/websocket.conf:

map $http_upgrade $connection_upgrade {
    default upgrade;
    ''      close;
}

Derefter i location:

proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $connection_upgrade;
proxy_read_timeout 1h;

nginx lukker en proxy-forbindelse, der ikke sender noget i 60 sekunder; den længere proxy_read_timeout holder stille WebSockets åbne. proxy_http_version 1.1 er først standard fra nginx 1.29.7, og Ubuntu 24.04 leveres med 1.24, så behold linjen.

Trin 3: Gratis HTTPS med Certbot

sudo snap install --classic certbot
sudo ln -s /snap/bin/certbot /usr/local/bin/certbot
sudo certbot --nginx -d app.example.com

Certbot henter et gratis Let's Encrypt-certifikat, tilføjer HTTPS-indstillingerne til din server-blok og kan omdirigere HTTP til HTTPS. Den fornyer certifikatet automatisk; tjek det med sudo certbot renew --dry-run. Mere om certifikater i sådan får du et gratis SSL-certifikat.

Sådan løser du fejl 502, 504 og 413

FejlTypisk årsagLøsning
502 Bad Gatewaynginx kan ikke nå appen: den er stoppet, gået ned eller lytter på en anden port eller adresseStart appen, tjek porten med curl http://127.0.0.1:PORT, læs /var/log/nginx/error.log
504 Gateway TimeoutAppen var længere end 60 sekunder om at svareGør forespørgslen hurtigere, eller hæv proxy_read_timeout for den location
413 Request Entity Too LargeEn upload er større end nginx' standardgrænse på 1 MBSæt client_max_body_size 50m; i server-blokken
OmdirigeringsløkkeAppen ved ikke, at den besøgende brugte HTTPSSend X-Forwarded-Proto med, og fortæl appen, at den står bag en proxy

Efter hver ændring: sudo nginx -t, derefter sudo systemctl reload nginx.

Kør det på en HytHost VPS

En reverse proxy kræver en server, hvor du selv styrer port 80 og 443. HytHost VPS-pakker kører på KVM med fuld root-adgang, SSD-lager og DDoS-beskyttelse; vælg Ubuntu 24.04 og følg trinene ovenfor. Kører dine apps i containere? Sæt først Docker op med sådan installerer du Docker på Ubuntu, og bind containernes porte til 127.0.0.1, så kun nginx kan nå dem.

FAQ

Ofte stillede spørgsmål

En reverse proxy sender forespørgsler videre til én eller flere apps bag sig. En load balancer er en reverse proxy, der fordeler forespørgsler mellem flere kopier af den samme app. nginx kan begge dele, med en upstream-blok, der lister kopierne.

nginx kan ikke nå appen bag sig. Tjek, at appen kører og lytter på adressen og porten i proxy_pass, og læs /var/log/nginx/error.log for den præcise årsag.

Nej, ikke når appen kører på samme server. nginx håndterer HTTPS for de besøgende og taler med appen over almindelig HTTP på 127.0.0.1, som aldrig forlader maskinen.

Giv hver app sin egen server-blok med sit eget server_name, for eksempel app.example.com og api.example.com, hver med en proxy_pass til en anden port.

Ja. Udgiv hver containers port kun på 127.0.0.1, og peg proxy_pass på den. Så holdes containerne væk fra det offentlige internet, hvilket er vigtigt, fordi Dockers udgivne porte går uden om ufw.

Host dine apps bag nginx

HytHost KVM VPS-pakker med fuld root-adgang, SSD-lager og DDoS-beskyttelse fra €2.92/md.

Live chat 8 AM – 11 PM (Chișinău time) · tickets answered during business hours

Var denne guide en hjælp?