EQVPS

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

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

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.

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.