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
23 lines
575 B
YAML
23 lines
575 B
YAML
# Stack de développement local : reverse proxy + upstream factice servant
|
|
# une page identifiable. Pour usage hors-test, ajuster les variables d'env.
|
|
|
|
services:
|
|
proxy:
|
|
build: .
|
|
image: maintenance-proxy:dev
|
|
ports:
|
|
- "8080:8080"
|
|
environment:
|
|
MAINTENANCE_MODE: whitelist
|
|
MAINTENANCE_IP_LIST: "127.0.0.1,::1"
|
|
UPSTREAM_HOST: "upstream:80"
|
|
LISTEN_PORT: "8080"
|
|
SERVER_NAME: "_"
|
|
depends_on:
|
|
- upstream
|
|
|
|
upstream:
|
|
image: nginx:stable-alpine
|
|
volumes:
|
|
- ./tests/fixtures/upstream:/usr/share/nginx/html:ro
|