EQVPS

Comment configurer un reverse proxy nginx avec HTTPS

Placez un domaine propre et le HTTPS automatique devant n'importe quelle application qui écoute sur un port local. Deux voies : nginx avec Certbot, ou Caddy pour du TLS automatique en une ligne. Pas à pas, avec la config prête à copier.

La plupart des applications auto-hébergées écoutent sur un port local comme 127.0.0.1:3000 et parlent en HTTP simple. Un reverse proxy se place devant sur les ports 80/443, termine le HTTPS avec un vrai certificat et transmet le trafic à ce port local — vous donnant un https://app.yourdomain.com propre et vous permettant de faire tourner plusieurs applications derrière une seule IP. Voici les deux voies courantes.

Prérequis

Option A — Caddy (HTTPS automatique, une ligne)

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

C'est tout — Caddy obtient un certificat Let's Encrypt pour le domaine et le renouvelle automatiquement.

Option B — nginx + Certbot

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

Créez /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;
    }
}

Activez-le et ajoutez le 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 modifie la config pour servir le HTTPS et met en place le renouvellement automatique.

Mises en garde honnêtes

Étapes suivantes

Le reverse proxy, c'est justement ce qui permet à un seul serveur de servir beaucoup de choses — voir héberger plusieurs services derrière une seule IP. Vous faites tourner l'application dans un conteneur ? Commencez par comment installer Docker. Pour que l'application elle-même survive aux redémarrages et aux plantages, voir comment créer un service systemd.

FAQ

Qu'est-ce qu'un reverse proxy et pourquoi m'en faut-il un ?

Votre application écoute généralement sur un port local comme 127.0.0.1:3000. Le reverse proxy se place devant sur les ports 80/443, termine le HTTPS et transmet les requêtes à ce port local. Il vous donne un domaine propre, un certificat TLS valide et la possibilité de faire tourner plusieurs applications derrière une seule IP — sans que l'application ait à s'en charger elle-même.

nginx ou Caddy — lequel choisir ?

Caddy est la voie la plus rapide : il obtient et renouvelle automatiquement les certificats Let's Encrypt, et un proxy HTTPS fonctionnel tient en une ligne de config. nginx est plus connu et plus flexible, mais pour le TLS vous ajoutez Certbot. Vous voulez du HTTPS avec le minimum d'effort — prenez Caddy ; vous connaissez déjà nginx ou en voulez les fonctionnalités — prenez nginx.

Ai-je besoin d'un domaine ?

Pour un certificat HTTPS de confiance, oui — Let's Encrypt émet des certificats pour des noms de domaine, pas pour des IP nues. Pointez un enregistrement A vers l'IP de votre serveur, attendez la propagation DNS, et le proxy pourra obtenir un certificat pour ce nom.

Quels ports faut-il ouvrir ?

80 et 443 en entrée. Le port 80 sert au défi initial du certificat et à la redirection vers HTTPS ; le 443 sert le trafic chiffré. Ouvrez les deux dans votre pare-feu (voir le guide UFW) et assurez-vous que rien d'autre ne les occupe déjà.

Pourquoi l'émission du certificat échoue-t-elle ?

Presque toujours le DNS ou les ports. L'enregistrement A du domaine doit pointer vers ce serveur et être propagé, et les ports 80/443 doivent être joignables (ouverts au pare-feu, non bloqués en amont). Corrigez ces deux points et l'émission réussit ; Caddy comme Certbot réessaient.

Commentaires

Pas encore de commentaires. Soyez le premier.

Laisser un commentaire

Les commentaires sont modérés avant leur publication.