VPS · Guide

nginx som omvänd proxy (reverse proxy): guide

Uppdaterad October 11, 2026 5 min läsning

På den här sidan
  1. Vad en omvänd proxy gör
  2. Steg 1: Installera nginx
  3. Steg 2: Skapa proxy-server-blocket
  4. Headers och det avslutande snedstrecket
  5. WebSockets
  6. Steg 3: Gratis HTTPS med Certbot
  7. Så åtgärdar du fel 502, 504 och 413
  8. Kör det på en HytHost VPS
  9. FAQ

En omvänd proxy står framför dina applikationer och skickar besökarnas förfrågningar vidare till dem. Med nginx framför blir en Node.js-app, en Docker-container eller en dashboard som kör på någon port till https://app.example.com – med HTTPS, korrekta headers och ett enda ställe att hantera allt från.

Den här guiden sätter upp nginx som omvänd proxy på Ubuntu, steg för steg: server-blocket, headers, WebSockets, gratis HTTPS och de fel du troligast stöter på.

Vad en omvänd proxy gör

  • En enda publik ingång. nginx lyssnar på port 80 och 443 och skickar varje domän eller sökväg till rätt app, så att apparna själva aldrig exponeras mot internet.
  • HTTPS på ett ställe. nginx hanterar certifikaten; apparna bakom kan prata vanlig HTTP på localhost.
  • Flera appar på en server. app.example.com, api.example.com och example.com/blog kan gå till var sin tjänst.
  • Extra: komprimering, cachning, uppladdningsgränser och åtkomstregler, utan att röra appen.

Steg 1: Installera nginx

sudo apt update
sudo apt install nginx

Öppna http://your-server-ip så bör du se nginx välkomstsida. Använder du ufw, tillåt webbtrafik med sudo ufw allow 'Nginx Full'.

Kontrollera att din app körs och går att nå på själva servern, till exempel med curl http://127.0.0.1:3000. Misslyckas det, misslyckas nginx också.

Kör nginx och dina appar med full root: HytHost KVM VPS-paket från €2.92/mån.

Se VPS-paket

Steg 2: Skapa proxy-server-blocket

På Ubuntu får varje webbplats en fil i /etc/nginx/sites-available/, som aktiveras med en länk i sites-enabled. Skapa /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;
    }
}

Aktivera den, testa konfigurationen och ladda om:

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

Peka domänens A-post mot din server, så visar http://app.example.com nu din app. Kör alltid nginx -t innan du laddar om: det fångar stavfel innan de tar ner sajten.

Headers och det avslutande snedstrecket

  • Host skickar domänen som besökaren efterfrågade. Utan den skickar nginx adressen från proxy_pass, och appar som bygger länkar utifrån host går sönder.
  • X-Real-IP och X-Forwarded-For skickar besökarens IP-adress. Utan dem ser varje förfrågan ut att komma från 127.0.0.1.
  • X-Forwarded-Proto talar om för appen om besökaren använde HTTPS, så att den inte omdirigerar i en loop.

Ubuntus nginx-paket har de här raderna i /etc/nginx/proxy_params, så include proxy_params; är en genväg.

Det avslutande snedstrecket spelar roll. För en app under en sökväg:

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

Med snedstrecket efter porten når /app/login appen som /login. Utan det får appen hela /app/login.

WebSockets

Chattappar, live-dashboards och många adminpaneler använder WebSockets, som behöver två extra headers. Lägg till den här map-en en gång i http-blocket, till exempel i en ny fil /etc/nginx/conf.d/websocket.conf:

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

Sedan i location:

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

nginx stänger en proxad anslutning som inte skickar något på 60 sekunder; den längre proxy_read_timeout håller tysta WebSockets öppna. proxy_http_version 1.1 är standard först från nginx 1.29.7, och Ubuntu 24.04 levereras med 1.24, så behåll raden.

Steg 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 hämtar ett gratis Let's Encrypt-certifikat, lägger till HTTPS-inställningarna i ditt server-block och kan omdirigera HTTP till HTTPS. Certifikatet förnyas automatiskt; kontrollera med sudo certbot renew --dry-run. Mer om certifikat i så får du ett gratis SSL-certifikat.

Så åtgärdar du fel 502, 504 och 413

FelVanlig orsakÅtgärd
502 Bad Gatewaynginx når inte appen: den är stoppad, har kraschat eller lyssnar på en annan port eller adressStarta appen, kontrollera porten med curl http://127.0.0.1:PORT, läs /var/log/nginx/error.log
504 Gateway TimeoutAppen tog längre än 60 sekunder på sig att svaraSnabba upp förfrågan, eller höj proxy_read_timeout för den location
413 Request Entity Too LargeEn uppladdning är större än nginx standardgräns på 1 MBSätt client_max_body_size 50m; i server-blocket
OmdirigeringsloopAppen vet inte att besökaren använde HTTPSSkicka med X-Forwarded-Proto och tala om för appen att den ligger bakom en proxy

Efter varje ändring: sudo nginx -t, sedan sudo systemctl reload nginx.

Kör det på en HytHost VPS

En omvänd proxy behöver en server där du själv styr port 80 och 443. HytHost VPS-paket körs på KVM med full root-åtkomst, SSD-lagring och DDoS-skydd; välj Ubuntu 24.04 och följ stegen ovan. Kör du dina appar i containrar? Sätt först upp Docker med så installerar du Docker på Ubuntu, och bind containrarnas portar till 127.0.0.1 så att bara nginx når dem.

FAQ

Vanliga frågor

En omvänd proxy skickar förfrågningar vidare till en eller flera appar bakom sig. En lastbalanserare är en omvänd proxy som fördelar förfrågningar mellan flera kopior av samma app. nginx klarar båda, med ett upstream-block som listar kopiorna.

nginx når inte appen bakom sig. Kontrollera att appen körs och lyssnar på adressen och porten i proxy_pass, och läs /var/log/nginx/error.log för den exakta orsaken.

Nej, inte när appen körs på samma server. nginx hanterar HTTPS för besökarna och pratar med appen över vanlig HTTP på 127.0.0.1, som aldrig lämnar maskinen.

Ge varje app ett eget server-block med ett eget server_name, till exempel app.example.com och api.example.com, var och ett med en proxy_pass till en annan port.

Ja. Publicera varje containers port bara på 127.0.0.1 och peka proxy_pass mot den. Då hålls containrarna borta från det publika internet, vilket är viktigt eftersom Dockers publicerade portar går förbi ufw.

Hosta dina appar bakom nginx

HytHost KVM VPS-paket med full root-åtkomst, SSD-lagring och DDoS-skydd från €2.92/mån.

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

Var den här guiden till hjälp?