Fait avec Chinaski

Hébergement statique avec nginx

nginx sert l'arborescence statique construite et transmet deux familles d'URL au démon du CMS. Le dépôt fournit deux exemples de vhosts ; cette page couvre les deux et la synchronisation de racine au déploiement.

Les deux fichiers d'exemple

  • deploy/chinaski.nginx.example : le vhost statique minimal : racine de documents, blocs de proxy /forms/ et /documents/, politiques de cache, et en-têtes de sécurité.
  • deploy/chinaski.nginx.conf.example : l'exemple par instance plus complet (port 80 par défaut ; ajoutez le TLS via certbot --nginx -d YOUR_DOMAIN après avoir activé le vhost).
  • Faites un lien symbolique dans sites-enabled/, lancez nginx -t, puis rechargez (systemctl reload nginx) après la configuration.

La racine de documents

Pointez root vers la sortie construite :

  • /var/www/chinaski<N>/output/<lang> : pour le multilingue par chemin (vhosts de langue individuels ; par ex. un par site de langue).
  • /var/www/chinaski<N>/output : pour les sites monolingues (le mode d'URL none).

Le script de déploiement corrige automatiquement la racine nginx pour vous : à chaque déploiement, deploy.sh réécrit la directive root dans toute configuration nginx référençant ce répertoire d'installation pour correspondre au mode de langue courant (seulement output pour none ; sinon output/<langue par défaut>), lance nginx -t, et recharge, avec un avertissement si le test de config échoue pour que vous sachiez devoir vérifier manuellement.

Blocs de proxy nécessaires

  • location ^~ /forms/ transmet à http://127.0.0.1:CMS_PORT : requis quand un formulaire du site publie des soumissions (ou rend n'importe quel formulaire). Sans : « chaque soumission de formulaire retourne 404 ».
  • location ^~ /documents/: requis quand le site utilise la fonctionnalité documents ; le suivi des téléchargements et l'état de publication des documents ne peuvent pas être intégrés dans un build statique.

Les autres chemins statiques n'ont besoin de rien de plus que try_files $uri $uri/index.html =404 (plus les directives de cache par asset et les en-têtes de sécurité).

En-têtes de cache définis par les exemples

  • HTML : maximum court (revalidate 5 minutes), pour que le contenu publié soit à temps.
  • Service worker : no-cache (sw.js).
  • Fonts : 1 an, immutable.
  • Autres assets : 1 jour.
  • En-têtes de sécurité, en ceinture-et-bretelles : l'application les définit aussi ; le proxy ajoute une couche pour les réponses avant que l'application n'ait une chance.

La transmission en loopback (et pourquoi elle n'exige pas de config supplémentaire)

Les exemples transmettent depuis 127.0.0.1, loopback, de confiance par défaut dans l'application. Si votre environnement réel transmet au CMS depuis une adresse non-loopback (un bridge de conteneurs, par exemple), ajoutez ce réseau à CHINASKI_TRUSTED_PROXIES pour que les vraies IPs client soient journalisées et que la limitation de débit fonctionne par visiteur.

Lisez ce site en