−25%

på Windows vid årsbetalning, till 31/10. Till paketen

EQVPS
Kom igång

Så sätter du upp en nginx-omvänd proxy med HTTPS

Sätt en ren domän och automatisk HTTPS framför vilken app som helst som lyssnar på en lokal port. Två vägar: nginx med Certbot, eller Caddy för automatisk TLS på en rad. Steg för steg, med kopieringsfärdig konfiguration.

De flesta självhostade appar lyssnar på en lokal port som 127.0.0.1:3000 och pratar vanlig HTTP. En omvänd proxy står framför på port 80/443, avslutar HTTPS med ett riktigt certifikat och skickar vidare trafik till den lokala porten — den ger dig ett rent https://app.yourdomain.com och låter dig köra flera appar bakom en enda IP. Här är de två vanliga vägarna.

Förutsättningar

  • En domän med en A-post som pekar mot din servers IP (vänta på DNS-spridning).
  • Portarna 80 och 443 öppna — se hur du sätter upp en UFW-brandvägg.
  • Din app körs lokalt, till exempel på 127.0.0.1:3000.

Alternativ A — Caddy (automatisk HTTPS, en rad)

sudo apt install -y caddy
echo 'app.yourdomain.com { reverse_proxy 127.0.0.1:3000 }' | sudo tee /etc/caddy/Caddyfile
sudo systemctl restart caddy

Det är allt — Caddy hämtar ett Let's Encrypt-certifikat för domänen och förnyar det automatiskt.

Alternativ B — nginx + Certbot

sudo apt install -y nginx certbot python3-certbot-nginx

Skapa /etc/nginx/sites-available/app:

server {
    listen 80;
    server_name app.yourdomain.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 och lägg till HTTPS:

sudo ln -s /etc/nginx/sites-available/app /etc/nginx/sites-enabled/
sudo nginx -t && sudo systemctl reload nginx
sudo certbot --nginx -d app.yourdomain.com

Certbot redigerar konfigurationen för att servera HTTPS och sätter upp automatisk förnyelse.

Ärliga varningar

  • DNS och portar är de vanliga felen. A-posten måste peka hit och vara spridd, och 80/443 vara nåbara, annars misslyckas certifikatutfärdandet. Båda verktygen försöker igen så snart det är åtgärdat.
  • Exponera bara det du avser. Håll appen bunden till 127.0.0.1 så att den bara går att nå via proxyn, inte direkt.
  • HTTPS behöver en domän, inte en naken IP — Let's Encrypt utfärdar för namn.

Nästa steg

Den omvända proxyn är precis det som låter en enda server servera många saker — se självhosta flera tjänster bakom en enda IP. Kör du appen i en container? Börja med hur du installerar Docker. För att appen själv ska överleva omstarter och krascher, se hur du skapar en systemd-tjänst.

Så pekar du en domän mot din VPS (A, AAAA och www) →

FAQ

Vad är en omvänd proxy och varför behöver jag en?

Din app lyssnar oftast på en lokal port som 127.0.0.1:3000. Den omvända proxyn står framför på port 80/443, avslutar HTTPS och skickar vidare förfrågningar till den lokala porten. Den ger dig en ren domän, ett giltigt TLS-certifikat och möjligheten att köra flera appar bakom en enda IP — utan att appen själv behöver sköta något av det.

nginx eller Caddy — vad ska jag välja?

Caddy är snabbaste vägen: den hämtar och förnyar Let's Encrypt-certifikat automatiskt, och en fungerande HTTPS-proxy är en rad konfiguration. nginx är mer känt och flexiblare, men för TLS lägger du till Certbot. Vill du ha HTTPS med minsta möjliga krångel, ta Caddy; kan du redan nginx eller vill ha dess funktioner, ta nginx.

Behöver jag en domän?

För ett betrott HTTPS-certifikat, ja — Let's Encrypt utfärdar certifikat för domännamn, inte för nakna IP-adresser. Peka en A-post mot din servers IP, vänta på DNS-spridning, sedan kan proxyn hämta ett certifikat för det namnet.

Vilka portar måste vara öppna?

80 och 443 inkommande. Port 80 används för den första certifikatutmaningen och omdirigeringen till HTTPS; 443 serverar den krypterade trafiken. Öppna båda i din brandvägg (se UFW-guiden) och se till att inget annat redan upptar dem.

Varför misslyckas certifikatutfärdandet?

Nästan alltid DNS eller portar. Domänens A-post måste peka på den här servern och vara spridd, och port 80/443 vara nåbara (öppna i brandväggen, inte blockerade uppströms). Åtgärda de två och utfärdandet lyckas; både Caddy och Certbot försöker igen.

Kommentarer

Inga kommentarer än. Bli först.

Lämna en kommentar

Kommentarer modereras innan de visas.