Maison > développement back-end > tutoriel php > Comment configurer efficacement les blocs d'emplacement Nginx pour servir des sous-dossiers avec différents URI ?

Comment configurer efficacement les blocs d'emplacement Nginx pour servir des sous-dossiers avec différents URI ?

Susan Sarandon
Libérer: 2024-11-24 01:11:15
original
336 Les gens l'ont consulté

How to Efficiently Configure Nginx Location Blocks for Serving Subfolders with Different URIs?

Configuration de l'emplacement Nginx pour les sous-dossiers

Dans la configuration Nginx, des chemins de dossiers spécifiques peuvent être mappés à différents URI pour une organisation et un routage améliorés. Un scénario courant consiste à configurer l'accès aux sous-dossiers dans un répertoire.

Considérez une structure de chemin telle que /var/www/myside/ où deux sous-dossiers, /static et /manage, existent. Le but est d'accéder à ces sous-dossiers via les URI / (pour /static) et /manage (pour /manage) tout en assurant un bon routage des fichiers PHP.

Un exemple initial de configuration Nginx peut ressembler à ceci :

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 /manage {
    root $uri/manage/public;

    try_files $uri /index.php$is_args$args;
  }

  location / {
    root $uri/static/;

    index index.html;
  }

  location ~ \.php {
    try_files $uri =404;
    fastcgi_split_path_info ^(.+\.php)(/.+)$;
    include fastcgi_params;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    fastcgi_param SCRIPT_NAME $fastcgi_script_name;
    fastcgi_index index.php;
    fastcgi_pass 127.0.0.1:9000;
  }
}
Copier après la connexion

Cependant, cette configuration peut ne pas fonctionner correctement pour accéder à /manage. La solution est d'utiliser la directive alias au lieu de root lors de l'accès à un sous-dossier avec un URI différent.

Voici une configuration Nginx révisée :

server {
    ...

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

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

        location ~ \.php$ {
            ...
        }
    }

    ...
}
Copier après la connexion

Avec cette modification, la configuration mappe / static vers / en utilisant root et /manage vers /manage en utilisant un alias. De plus, les directives try_files et if garantissent que les demandes de fichiers inexistants dans ces sous-dossiers sont correctement traitées.

En combinant les directives alias et root, ainsi qu'une utilisation appropriée des blocs d'emplacement, Nginx peut être configuré pour servir efficacement le contenu des sous-dossiers avec des URI spécifiques.

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!

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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal