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
203 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!

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