Nginx: Statische Dateien aus einem bestimmten Verzeichnis bereitstellen - eine Ebene zu tief

13

Ich bin ziemlich neu in Nginx-Konfigurationen. Ich habe einige Schwierigkeiten mit einem ziemlich grundlegenden Problem. Ich möchte einige statische Dateien unter / doc hosten (index.html, einige Bilder usw.). Die Dateien befinden sich in einem Verzeichnis namens / sites / mysite / proj / doc /.

Das Problem ist, dass nginx mit der folgenden nginx-Konfiguration versucht, nach einem Verzeichnis mit dem Namen "/ sites / mysite / proj / doc / doc" zu suchen. Möglicherweise kann dies behoben werden, indem Sie das Stammverzeichnis auf / sites / mysite / proj / setzen, aber ich möchte möglicherweise keine anderen (nicht statischen) Assets im Verzeichnis proj / verfügbar machen. Und aus verschiedenen Gründen kann ich das Verzeichnis doc / nicht wirklich dorthin verschieben, wo es sich befindet.

Ich denke, es gibt eine Möglichkeit, eine Rewrite-Regel zu verwenden, um diese Situation zu lösen, aber ich verstehe nicht wirklich alle Teile, so dass ich Schwierigkeiten habe, die Regel zu formulieren.

rewrite ^/doc/(.*)$ /$1 permanent;

Ich habe auch ein funktionierendes Beispiel für das Hosten von Dateien aus einem / sites / mysite / htdocs / static / -Verzeichnis eingefügt.

> vim locations.conf

location /static {
    root   /sites/mysite/htdocs/;
    access_log   off;
    autoindex  on;
}

location /doc {
    root   /sites/mysite/proj/doc/;
    access_log   on;
    autoindex  on;
}


2011/11/19 23:49:00 [error] 2314#0: *42 open() "/sites/mysite/proj/doc/doc" failed (2: No such file or directory), client: 100.100.100.100, server: , request: "GET /doc HTTP/1.1", host: "myhost.com"

Hat jemand eine Idee, wie ich diesen statischen Inhalt bereitstellen könnte?

Joe J
quelle

Antworten: