Nginx racines multiples


13

Je voudrais détourner les demandes vers un sous-répertoire particulier, vers un autre emplacement racine. Comment? Mon bloc existant est:

server {
    listen       80;
    server_name  www.domain.com;

    location / {
        root   /home/me/Documents/site1;
        index  index.html;
    }

    location /petproject {
        root   /home/me/pet-Project/website;
        index  index.html;
        rewrite ^/petproject(.*)$ /$1;
    }

    # redirect server error pages to the static page /50x.html
    #
    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /usr/share/nginx/html;
    } }

Autrement dit, http://www.domain.com devrait servir /home/me/Documents/site1/index.html tandis que http://www.domain.com/petproject devrait servir / home / me / pet-Project / website /index.html - il semble que nginx réexécute toutes les règles après le remplacement, et http://www.domain.com/petproject sert juste /home/me/Documents/site1/index.html.

Réponses:


27

La configuration a le problème habituel qui se produit généralement avec nginx. Autrement dit, en utilisant la rootdirective à l'intérieur du locationbloc.

Essayez d'utiliser cette configuration au lieu de vos locationblocs actuels :

root /home/me/Documents/site1;
index index.html;

location /petproject {
    alias /home/me/pet-Project/website;
}

Cela signifie que le répertoire par défaut de votre site Web est /home/me/Documents/site1, et pour l' /petprojectURI, le contenu est servi à partir du /home/me/pet-Project/websiterépertoire.


4

Vous avez besoin de l' breakindicateur ajouté à la règle de réécriture, afin que le traitement s'arrête, et comme il se trouve à l'intérieur d'un bloc d'emplacement, le traitement se poursuivra à l'intérieur de ce bloc:

rewrite ^/petproject/?(.*)$ /$1 break;

Remarque J'ai également ajouté /?au modèle de correspondance afin de ne pas vous retrouver avec des doubles barres obliques au début de l'URL.


La réécriture n'est pas du tout nécessaire ici lorsque la aliasdirective est utilisée comme elle devrait l'être ici.
Tero Kilkanen du
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.