Installer nginx
Configuré comme proxy inverse devant d'autres services auto-hébergés, pas comme serveur de site web à part entière.
- 1
Lancer le conteneur
Monter un dossier de fichiers de configuration plutôt que le seul fichier par défaut, ça passe mieux à l'échelle à mesure que d'autres services s'ajoutent plus tard.
services: nginx: image: nginx:latest container_name: nginx restart: unless-stopped ports: - "80:80" - "443:443" volumes: - ./conf.d:/etc/nginx/conf.d - ./certs:/etc/nginx/certs:ro - 2
Écrire un bloc serveur en proxy inverse
Chaque service a son propre fichier dans conf.d. Si le conteneur ciblé est sur le même réseau Docker, son nom de conteneur fonctionne directement comme nom d'hôte, sans besoin d'adresse IP.
# conf.d/frigate.conf server { listen 443 ssl; server_name frigate.example.com; ssl_certificate /etc/nginx/certs/fullchain.pem; ssl_certificate_key /etc/nginx/certs/privkey.pem; location / { proxy_pass http://frigate:5000; proxy_set_header Host $host; } } - 3
Obtenir un vrai certificat
Un outil comme certbot ou acme.sh peut émettre et renouveler automatiquement un certificat Let's Encrypt pour chaque domaine, déposé dans le volume certs monté ci-dessus.
- 4
Recharger après un changement de configuration
Ceci relit la configuration sans couper les connexions actives, aucun redémarrage complet requis.
docker exec nginx nginx -s reload
Pour aller plus loin
- Documentation de nginx
Référence complète des directives pour le proxy inverse, la répartition de charge et un routage plus avancé.
- Let's Encrypt / certbot
Certificats gratuits et automatisés, le moyen le plus courant d'obtenir un vrai HTTPS sur un domaine auto-hébergé.