Maison > développement back-end > tutoriel php > Comment configurer Nginx pour diffuser le contenu de deux sous-dossiers avec des chemins racine différents ?

Comment configurer Nginx pour diffuser le contenu de deux sous-dossiers avec des chemins racine différents ?

Susan Sarandon
Libérer: 2024-11-23 00:52:12
original
443 Les gens l'ont consulté

How to Configure Nginx to Serve Content from Two Subfolders with Different Root Paths?

Configuration de l'emplacement Nginx pour les sous-dossiers

Dans cet article, nous explorerons comment configurer Nginx pour diffuser le contenu de deux sous-dossiers, un à le chemin racine et l'autre à une URL spécifique.

Considérez le répertoire suivant structure :

/var/www/myside/
├── static
├── manage
Copier après la connexion

Notre objectif est de rendre le dossier /static accessible à l'URL racine (par exemple, http://example.org/) et le dossier /manage accessible à /manage (par exemple, http ://exemple.org/manage). Dans ce cas, le dossier /manage contient le code du framework PHP de Slim, avec le fichier PHP réel situé dans /var/www/mysite/manage/public/index.php.

Configuration Nginx

Pour y parvenir, nous pouvons utiliser la directive de localisation de Nginx. Voici une configuration possible :

server {
  listen 80;
  server_name example.org;
  error_log /usr/local/etc/nginx/logs/mysite/error.log;
  access_log /usr/local/etc/nginx/logs/mysite/access.log;
  root /var/www/mysite;

  location / {
    root /var/www/mysite/static;
    index index.html;
  }

  location /manage {
    alias /var/www/mysite/manage/public;
    index index.php;

    if (!-e $request_filename) {
      rewrite ^ /manage/index.php last;
    }

    location ~ \.php$ {
      if (!-f $request_filename) {
        return 404;
      }
      fastcgi_pass 127.0.0.1:9000;

      include fastcgi_params;
      fastcgi_param SCRIPT_FILENAME $request_filename;
      fastcgi_param SCRIPT_NAME $fastcgi_script_name;
    }
  }

  location ~ \.php$ {
    try_files $uri =404;
    fastcgi_pass 127.0.0.1:9000;

    include fastcgi_params;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    fastcgi_param SCRIPT_NAME $fastcgi_script_name;
    fastcgi_index index.php;
  }
}
Copier après la connexion

Explication

Décomposons la configuration :

  • Premier bloc d'emplacement (/ ): Spécifie que le dossier /static doit être servi à partir de la racine URI.
  • Deuxième bloc d'emplacement (/manage) : Utilise la directive alias pour mapper l'URI /manage au répertoire /var/www/mysite/manage/public.
  • Troisième bloc d'emplacement (emplacement ~ .php$ dans /manage) : Configure la gestion des fichiers PHP dans /manage dossier.
  • Bloc d'emplacement final (emplacement ~ .php$ au niveau du serveur) : Configure la gestion des fichiers PHP dans le dossier /static.

Utilisation de l'alias par rapport à la racine

Lors de l'utilisation d'un alias, Nginx sert les fichiers du répertoire spécifié tout en conservant l'original URI. Ceci est utile pour notre objectif, car nous voulons que l'URI /manage pointe vers le répertoire /var/www/mysite/manage/public.

En revanche, root modifie le répertoire racine du bloc d'emplacement, donc cela ne convient pas à notre scénario dans lequel nous souhaitons servir différents sous-dossiers à partir de différents emplacements.

Réécrire la règle pour index.php

La règle de réécriture garantit que les demandes de fichiers inexistants dans le dossier /manage sont redirigées vers index.php. Cela permet à l'application PHP de Slim de gérer la demande.

Gestion des fichiers PHP

Les deux blocs d'emplacement pour la gestion des fichiers PHP incluent la configuration nécessaire pour exécuter des scripts PHP, tels que FastCGI. paramètres et variables. La directive fastcgi_pass dirige les requêtes PHP vers un serveur PHP FastCGI.

Notes finales

Assurez-vous que votre serveur PHP FastCGI est en cours d'exécution et correctement configuré. Cette configuration devrait vous permettre de diffuser correctement le contenu des sous-dossiers /static et /manage.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal