1 votes

Nginx - emplacement spécifique de la racine

J'ai beaucoup de mal à mettre en œuvre cette solution (que j'espère simple).

Nous avons un site à l'adresse site.com et il est servi à partir de /home/site/public. Nous avons besoin qu'un sous-répertoire spécifique de site.com (site.com/gps) soit servi à partir d'une racine de document DIFFÉRENTE pour éviter les implications en matière de sécurité. IE site.com/gps doit être servi à partir de /home/sitegps/public. J'ai implémenté le bloc d'emplacement suivant, mais il n'aboutit qu'à un http 500 en raison de redirections infinies. J'espère que quelqu'un a déjà fait cela et sait où je me trompe...

# Send all /gps requests to new root
location ~ ^/gps(?:/(.*))?$ {
    alias /home/sitegps/public;
    try_files $uri $uri/ /gps/index.php?$uri&$args;
}

1voto

Au lieu de alias , il est possible d'utiliser l'option racine à l'intérieur du bloc d'emplacement.

Je pense que vous pouvez simplifier votre recherche de localisation en utilisant simplement /gps également.

location /gps {
    root /home/sitegps/public;
    try_files $uri $uri/ /gps/index.php?$uri&$args;
}

Cela ne réécrira pas la requête et s'attendra à ce que les fichiers correspondent à ceux d'un répertoire appelé gps comme suit : /home/sitegps/public/gps/ . Je ne savais pas si c'était nécessaire.

Update

En partant de l'hypothèse que vous ne voulez pas avoir le gps dans le répertoire /home/sitespg/public j'ai testé l'utilisation d'alias et j'ai obtenu cette configuration :

server {
    listen 80 default_server;
    listen [::]:80 default_server;

    root /var/www/html;

    index index.html;

    server_name _;

    location / {
            try_files $uri $uri/ =404;
    }

    location /gps/ {
            alias /var/www/gps;
            try_files $uri $uri/ =404;
    }
}

Je crois que le alias fera ce que vous voulez, mais soit la correspondance de l'emplacement de la regex cause des problèmes, soit il y a quelque chose d'autre qui ne va pas.

Avec la barre oblique de /gps/ vous éviterez de faire correspondre des chemins comme /gpsport mais vous devrez soit réécrire /gps a /gps/ ou correspondre /gps exactement avec un bloc de localisation.

réécrire :

rewrite ^/gps$ /gps/

l'emplacement :

location = /gps {
    alias /var/www/gps;
    try_files $uri $uri/ =404;
}

Il existe sans doute d'autres variantes qui fonctionneront également.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X