The Webcoast
Retour à nginx

Installer nginx

Configuré comme proxy inverse devant d'autres services auto-hébergés, pas comme serveur de site web à part entière.

  1. 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. 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. 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. 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é.