b968ec8aa5
Reverse proxy Nginx (image stable-alpine) qui sert l'app upstream ou une page de maintenance 503 selon l'IP du client. - Modes whitelist/blacklist commutables via MAINTENANCE_MODE - Liste IPv4 via MAINTENANCE_IP_LIST (séparée par virgules, validée au boot) - Logique en directives Nginx natives (geo + map), zéro Lua/njs - Page statique sobre HTML+CSS inline, zéro JS, zéro réseau sortant - Log dédié /var/log/nginx/maintenance.log pour les requêtes bloquées - Validation des env vars dans /docker-entrypoint.d/10-init.sh - Stack Docker + docker-compose pour dev local et tests - 6 cas de tests d'intégration (whitelist/blacklist x autorisée/bloquée + log + nginx -t) - Lint shellcheck propre sur tous les scripts shell
21 lines
694 B
Bash
Executable File
21 lines
694 B
Bash
Executable File
#!/usr/bin/env bash
|
|
# Vérifie que la configuration Nginx complète passe `nginx -t` une fois
|
|
# templatée et le snippet geo généré. Ne dépend pas du proxy "live" :
|
|
# lance un conteneur jetable.
|
|
|
|
set -euo pipefail
|
|
# shellcheck source-path=SCRIPTDIR
|
|
# shellcheck source=../lib.sh
|
|
source "$(dirname "$0")/../lib.sh"
|
|
|
|
docker run --rm \
|
|
-e MAINTENANCE_MODE=whitelist \
|
|
-e MAINTENANCE_IP_LIST="172.28.5.50,10.0.0.42" \
|
|
-e UPSTREAM_HOST="upstream:80" \
|
|
-e LISTEN_PORT=8080 \
|
|
-e SERVER_NAME=_ \
|
|
--entrypoint /bin/sh \
|
|
maintenance-proxy:test \
|
|
-c '/docker-entrypoint.sh nginx -t' >/dev/null 2>&1 \
|
|
|| t_fail "nginx -t a échoué sur la configuration générée"
|