Skip to content

perf: php-fpm + nginx sur Alpine (547MB -> 93MB)#72

Merged
mortifia merged 1 commit into
masterfrom
perf/web-fpm-nginx-alpine
Jul 15, 2026
Merged

perf: php-fpm + nginx sur Alpine (547MB -> 93MB)#72
mortifia merged 1 commit into
masterfrom
perf/web-fpm-nginx-alpine

Conversation

@mortifia

@mortifia mortifia commented Jul 15, 2026

Copy link
Copy Markdown
Contributor

Résumé

Aucune RewriteRule/RewriteCond dans le repo. La seule fonctionnalité Apache utilisée est le Basic Auth de Calendar/ADMIN/ (.htaccess) — équivalent nginx direct (auth_basic), même format .htpasswd. apache2-utils reste installé (nom de paquet identique sur Alpine) pour htpasswd, toujours appelé par docker-entrypoint.sh.

Point d'attention traité avec soin

Chez nginx, un bloc location ~ \.php$ générique est prioritaire sur un location /Calendar/ADMIN/ simple pour les requêtes .php (les locations regex passent avant les préfixes simples) — sans précaution, l'auth aurait pu être contournée pour les fichiers .php de l'admin. Résolu avec location ^~ /Calendar/ADMIN/ + un bloc \.php$ imbriqué qui répète explicitement auth_basic, et vérifié directement plutôt que supposé correct (voir test plan).

Mesures

Taille de l'image : 547MB -> 93MB (-83%)

Test plan

Testé sur le VPS (build --no-cache + conteneur démarré réellement, CALENDAR_ADMIN_USER/PASSWORD factices) :

  • .htpasswd généré correctement au démarrage
  • / répond 200
  • Calendar/data/ répond 403 (bloqué, comme avant)
  • Calendar/ADMIN/index.php SANS identifiants → 401
  • Calendar/ADMIN/ (répertoire) SANS identifiants → 401
  • Calendar/ADMIN/modules/gameList.php SANS identifiants → 401 (le point sensible : confirme qu'aucun .php de l'admin n'échappe à l'auth)
  • Calendar/ADMIN/index.php avec MAUVAIS identifiants → 401
  • Calendar/ADMIN/index.php avec BONS identifiants → 200
  • curl_init() disponible dans le conteneur

Closes #73

…93MB)

Aucune RewriteRule/RewriteCond dans le repo. La seule fonctionnalité
Apache utilisée est le Basic Auth de Calendar/ADMIN/ (.htaccess) —
équivalent nginx direct (auth_basic), même format .htpasswd, apache2-utils
reste installé (nom de paquet identique sur Alpine) pour htpasswd toujours
appelé par docker-entrypoint.sh.

Point d'attention traité avec soin : chez nginx, un bloc "location ~
\.php$" générique est prioritaire sur un "location /Calendar/ADMIN/"
simple pour les requêtes .php (les locations regex passent avant les
préfixes simples) — sans précaution, l'auth aurait pu être contournée
pour les fichiers .php de l'admin. Résolu avec "location ^~
/Calendar/ADMIN/" + un bloc \.php$ imbriqué qui répète explicitement
auth_basic, et vérifié directement plutôt que supposé correct.

Testé sur le VPS (build --no-cache + conteneur démarré réellement,
CALENDAR_ADMIN_USER/PASSWORD factices) :
- .htpasswd généré correctement au démarrage
- / répond 200
- Calendar/data/ répond 403 (bloqué, comme avant)
- Calendar/ADMIN/index.php SANS identifiants -> 401
- Calendar/ADMIN/ (répertoire) SANS identifiants -> 401
- Calendar/ADMIN/modules/gameList.php SANS identifiants -> 401 (le point
  sensible : confirme qu'aucun .php de l'admin n'échappe à l'auth)
- Calendar/ADMIN/index.php avec MAUVAIS identifiants -> 401
- Calendar/ADMIN/index.php avec BONS identifiants -> 200
- curl_init() disponible dans le conteneur

Taille de l'image : 547MB -> 93MB (-83%).
@mortifia
mortifia merged commit 99ae202 into master Jul 15, 2026
7 checks passed
@mortifia
mortifia deleted the perf/web-fpm-nginx-alpine branch July 15, 2026 06:02
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Réduire la taille de l'image Docker web (planning.unionrolistes.fr)

1 participant