Rechercher

2.2. Configurer NGINX comme un serveur web qui fournit un contenu différent pour différents domaines

download PDF

Par défaut, NGINX agit comme un serveur web qui fournit le même contenu aux clients pour tous les noms de domaine associés aux adresses IP du serveur. Cette procédure explique comment configurer NGINX :

  • Pour servir les requêtes au domaine example.com avec le contenu du répertoire /var/www/example.com/
  • Pour servir les requêtes au domaine example.net avec le contenu du répertoire /var/www/example.net/
  • Servir toutes les autres demandes, par exemple à l'adresse IP du serveur ou à d'autres domaines associés à l'adresse IP du serveur, avec le contenu du répertoire /usr/share/nginx/html/

Conditions préalables

  • NGINX est installé
  • Les clients et le serveur web résolvent les domaines example.com et example.net en fonction de l'adresse IP du serveur web.

    Notez que vous devez ajouter manuellement ces entrées à votre serveur DNS.

Procédure

  1. Modifiez le fichier /etc/nginx/nginx.conf:

    1. Par défaut, le fichier /etc/nginx/nginx.conf contient déjà une configuration "catch-all". Si vous avez supprimé cette partie de la configuration, ajoutez à nouveau le bloc server au bloc http dans le fichier /etc/nginx/nginx.conf:

      server {
          listen       80 default_server;
          listen       [::]:80 default_server;
          server_name  _;
          root         /usr/share/nginx/html;
      }

      Ces paramètres permettent de configurer les éléments suivants :

      • La directive listen définit l'adresse IP et les ports que le service écoute. Dans ce cas, NGINX écoute sur le port 80 sur toutes les adresses IPv4 et IPv6. Le paramètre default_server indique que NGINX utilise ce bloc server par défaut pour les requêtes correspondant aux adresses IP et aux ports.
      • Le paramètre server_name définit les noms d'hôtes dont ce bloc server est responsable. La configuration de server_name à _ permet à NGINX d'accepter n'importe quel nom d'hôte pour ce bloc server.
      • La directive root définit le chemin d'accès au contenu web pour ce bloc server.
    2. Ajoutez au bloc http un bloc server similaire pour le domaine example.com:

      server {
          server_name  example.com;
          root         /var/www/example.com/;
          access_log   /var/log/nginx/example.com/access.log;
          error_log    /var/log/nginx/example.com/error.log;
      }
      • La directive access_log définit un fichier journal d'accès distinct pour ce domaine.
      • La directive error_log définit un fichier journal des erreurs distinct pour ce domaine.
    3. Ajoutez au bloc http un bloc server similaire pour le domaine example.net:

      server {
          server_name  example.net;
          root         /var/www/example.net/;
          access_log   /var/log/nginx/example.net/access.log;
          error_log    /var/log/nginx/example.net/error.log;
      }
  2. Créez les répertoires racine pour les deux domaines :

    # mkdir -p /var/www/example.com/
    # mkdir -p /var/www/example.net/
  3. Définir le contexte httpd_sys_content_t sur les deux répertoires racine :

    # semanage fcontext -a -t httpd_sys_content_t "/var/www/example.com(/.*)?"
    # restorecon -Rv /var/www/example.com/
    # semanage fcontext -a -t httpd_sys_content_t "/var/www/example.net(/.\*)?"
    # restorecon -Rv /var/www/example.net/

    Ces commandes définissent le contexte httpd_sys_content_t sur les répertoires /var/www/example.com/ et /var/www/example.net/.

    Notez que vous devez installer le paquetage policycoreutils-python-utils pour exécuter les commandes restorecon.

  4. Créez les répertoires de journaux pour les deux domaines :

    # mkdir /var/log/nginx/example.com/
    # mkdir /var/log/nginx/example.net/
  5. Redémarrez le service nginx:

    # systemctl restart nginx

Verification steps

  1. Créez un fichier d'exemple différent dans la racine du document de chaque hôte virtuel :

    # echo "Content for example.com" > /var/www/example.com/index.html
    # echo "Content for example.net" > /var/www/example.net/index.html
    # echo "Catch All content" > /usr/share/nginx/html/index.html
  2. Utilisez un navigateur et connectez-vous à http://example.com. Le serveur web affiche l'exemple de contenu du fichier /var/www/example.com/index.html.
  3. Utilisez un navigateur et connectez-vous à http://example.net. Le serveur web affiche l'exemple de contenu du fichier /var/www/example.net/index.html.
  4. Utilisez un navigateur et connectez-vous à http://IP_address_of_the_server. Le serveur web affiche l'exemple de contenu du fichier /usr/share/nginx/html/index.html.
Red Hat logoGithubRedditYoutubeTwitter

Apprendre

Essayez, achetez et vendez

Communautés

À propos de la documentation Red Hat

Nous aidons les utilisateurs de Red Hat à innover et à atteindre leurs objectifs grâce à nos produits et services avec un contenu auquel ils peuvent faire confiance.

Rendre l’open source plus inclusif

Red Hat s'engage à remplacer le langage problématique dans notre code, notre documentation et nos propriétés Web. Pour plus de détails, consultez leBlog Red Hat.

À propos de Red Hat

Nous proposons des solutions renforcées qui facilitent le travail des entreprises sur plusieurs plates-formes et environnements, du centre de données central à la périphérie du réseau.

© 2024 Red Hat, Inc.