Publier un site (Nginx + HTTPS)¶
Tous les sites passent par le reverse proxy Nginx de la CT 104, qui gère aussi les certificats Let's Encrypt. Une appli dans sa CT écoute sur un port interne (par exemple 10.0.0.48:3000) ; Nginx la publie sur https://<sous-domaine>.flgr.fr.
flowchart LR
U[Internet] -- 80 / 443 --> N[Nginx CT 104]
N -- HTTP interne --> A["CT du projet<br/>10.0.0.XX:PORT"]
1. Créer le sous-domaine¶
Chez OVH, zone DNS flgr.fr : ajouter un enregistrement CNAME <sous-domaine> → flgr.fr. (avec le point final). Vérifier qu'il résout avant de continuer :
getent hosts <sous-domaine>.flgr.fr
2. Déclarer le site en HTTP¶
Dans la CT 104, créer /etc/nginx/sites-available/<domaine> avec seulement la partie HTTP : elle sert à la validation Let's Encrypt et redirige tout le reste vers HTTPS.
server {
listen 80;
server_name <domaine>;
location /.well-known/acme-challenge/ { root /var/www/html; }
location / { return 301 https://$host$request_uri; }
}
ln -s /etc/nginx/sites-available/<domaine> /etc/nginx/sites-enabled/
nginx -t && systemctl reload nginx
3. Obtenir le certificat¶
certbot certonly --webroot -w /var/www/html -d <domaine>
Le renouvellement est ensuite automatique.
4. Ajouter la partie HTTPS¶
Compléter le fichier :
server {
listen 443 ssl;
http2 on;
server_name <domaine>;
ssl_certificate /etc/letsencrypt/live/<domaine>/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/<domaine>/privkey.pem;
ssl_protocols TLSv1.2 TLSv1.3;
location / {
proxy_pass http://10.0.0.<XX>:<PORT>;
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;
# si l'appli utilise des WebSockets
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
}
nginx -t && systemctl reload nginx
curl -I https://<domaine>
Supprimer un site¶
Retirer le lien dans sites-enabled, recharger Nginx, et supprimer le certificat :
certbot delete --cert-name <domaine>
Pourquoi supprimer le certificat
Un certificat dont le domaine ne répond plus échoue à chaque renouvellement nocturne. Le service de renouvellement passe alors en échec en permanence… et on ne remarque plus le jour où un vrai site ne se renouvelle pas.
Et pour un serveur de jeu ?¶
Les jeux n'utilisent pas HTTP : ils passent par une redirection de port sur le routeur, directement vers la CT. C'est à demander à l'admin du serveur ; ne pas exposer de port sans en avoir parlé.