it-swarm.com.de

Konfigurieren Sie nginx mit mehreren Speicherorten mit unterschiedlichen Stammordnern in der Unterdomäne

Ich möchte die Stamm-URL einer Unterdomäne und das Verzeichnis einer Unterdomäne in zwei verschiedenen Ordnern auf meinem Server bereitstellen. Hier ist die einfache Einrichtung, die ich habe und die nicht funktioniert ...

server {

    index index.html index.htm;
    server_name test.example.com;

    location / {
            root /web/test.example.com/www;
    }

    location /static {
            root /web/test.example.com/static;
    }
}

In diesem Beispiel würde ein Wechsel zu test.example.com/ Die Indexdatei in /web/test.example.com/www Bringen.

wenn Sie zu test.example.com/static wechseln, wird die Indexdatei in /web/test.example.com/static gespeichert.

181
simoes

Sie müssen die Anweisung alias für location /static Verwenden:

server {

  index index.html;
  server_name test.example.com;

  root /web/test.example.com/www;

  location /static {
    alias /web/test.example.com/static;
  }

}

Das nginx wiki erklärt den Unterschied zwischen root und alias besser als ich kann:

Beachten Sie, dass es auf den ersten Blick ähnlich wie die root-Direktive aussieht, sich jedoch der Dokumentenstamm nicht ändert, sondern nur der Dateisystempfad, der für die Anforderung verwendet wird. Der Ortsteil der Anforderung wird in den Nginx-Problemen der Anforderung gelöscht.

209
furq

Das Location-Direktivensystem ist

Wie möchten Sie alle Anfragen weiterleiten, die beginnen /static und Ihre Daten in /var/www/static

Eine einfache Methode ist also, den letzten Ordner vom vollständigen Pfad zu trennen

Vollständigen Pfad : /var/www/static

Letzter Pfad: /static und Erster Pfad: /var/www

location <lastPath> {
    root <FirstPath>;
}

Mal sehen, was Sie falsch gemacht haben und was Ihre Lösungen sind

Dein Fehler :

location /static {
    root /web/test.example.com/static;
}

Ihre Lösungen:

location /static {
    root /web/test.example.com;
}
91
Kernelv5
server {

    index index.html index.htm;
    server_name test.example.com;

    location / {
        root /web/test.example.com/www;
    }

    location /static {
        root /web/test.example.com;
    }
}

http://nginx.org/r/root

45
VBart