it-swarm.com.de

Nginx mehrere Wurzeln

Ich möchte Anfragen an ein bestimmtes Unterverzeichnis an einen anderen Stammspeicherort umleiten. Wie? Mein bestehender Block ist:

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;
    } }

Das heißt, http://www.domain.com sollte /home/me/Documents/site1/index.html dienen, während http://www.domain.com/petproject sollte /home/me/pet-Project/website/index.html dienen - es scheint, dass nginx nach dem Ersetzen alle Regeln erneut ausführt und http://www.domain.com/petproject dient nur /home/me/Documents/site1/index.html.

Die Konfiguration hat das übliche Problem, das normalerweise bei Nginx auftritt. Das heißt, mit der Direktive root innerhalb des Blocks location.

Versuchen Sie, diese Konfiguration anstelle Ihrer aktuellen location -Blöcke zu verwenden:

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

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

Dies bedeutet, dass das Standardverzeichnis für Ihre Website /home/me/Documents/site1 Ist und für den URI /petproject Der Inhalt aus dem Verzeichnis /home/me/pet-Project/website Bereitgestellt wird.

27
Tero Kilkanen

Sie müssen das Flag break zur Umschreiberegel hinzufügen, damit die Verarbeitung gestoppt wird und die Verarbeitung innerhalb eines Standortblocks innerhalb dieses Blocks fortgesetzt wird:

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

Hinweis Ich habe auch /? zum passenden Muster, damit Sie am Anfang der URL keine doppelten Schrägstriche erhalten.

4
wurtel