Wie gebe ich Windows-Dateipfade in nginx an?

22

Ich verwende die offizielle Windows-Version von Nginx. Ich möchte das Windows-Äquivalent dieser Konfiguration angeben

location /static/ {
   alias /home/user/staticfiles/;
}

Wie gebe ich Windows-Dateipfade in der Alias-Direktive an? Ist das überhaupt möglich?

Vasil
quelle

Antworten:

17

Diese Antworten müssen veraltet sein. Die Verwendung von Nginx 1.3.8-Absolutpfaden mit Schrägstrichen funktioniert. Backslashes scheinen zu funktionieren, sollten aber verdoppelt werden. Wenn dies nicht der Fall ist, werden einige, z. B. ein Trailing \", wörtlich genommen.

location /static/ {
    # alias "C:\\foo\\bar\\...\\static\\";
    alias "C:/foo/bar/.../static/";
    expires 90d;
}

Die Anführungszeichen sind möglicherweise nicht erforderlich, scheinen jedoch für eingebettete Leerzeichen eine gute Idee zu sein.

Eine andere Sache, die mir aufgefallen ist, ist, dass es wichtig ist, den URL- und Alias-Pfad in Bezug auf das Beenden mit einem abschließenden Schrägstrich abzugleichen oder nicht - eine Nichtübereinstimmung und es funktioniert nicht.

Gringo Suave
quelle
Funktioniert immer noch in Nginx 1.8.1
Daniel
Ihr Rat, mit Anführungszeichen umzugehen, hat mir sehr geholfen!
Schlagen
5

Wenn Sie versuchen, einen absoluten Pfad wie ... anzugeben

location / {
    alias C:\Users\SomeUser\mysite\static;
}

... und wenn Sie eine Datei von diesem Speicherort anfordern, sehen Sie wahrscheinlich Fehler in C: \ nginx \ logs \ error.log wie:

2011/11/11 12:53:16 [error] 6236#0: *1 open() "/cygdrive/c/nginx/C:\Users\SomeUser\mysite\static\somefile.css

Geben Sie bei der Konfiguration von nginx unter Windows alle Pfade relativ zum Verzeichnis C: \ nginx an. Das funktioniert:

location / {
    alias ../Users/SomeUser/mysite/static;
}

Persönlich habe ich mich gefreut, das zu erfahren, da meine Nginx-Konfigurationen dadurch ein wenig portabler zwischen Windows und Linux sind, als ich erwartet hatte. Um eine Linux-Konfigurationsdatei in eine unter Windows funktionierende zu verwandeln, ist es für mich im Grunde nur Folgendes:

s|/home/myname/|../Users/Myname|
Jacob Wan
quelle
Dies funktioniert mit Nginx 1.9.10, danke!
NenadP
2

Sie können dies versuchen:

  1. Kopieren Sie Ihre statischen Dateien in nginx / html / staticfiles
  2. in nginx.conf setzen

    location / static / {alias / nginx / html / staticfiles /; }

Valery Viktorovsky
quelle
1

scheint, dass Alias ​​für mein Windows-System überhaupt nicht funktioniert. Ich habe versucht zu tippen

alias "c:"

aber auch das geht nicht. Und ich kann keine Möglichkeit finden, den Speicherort auszugeben, nachdem die Konfigurationsdatei von nginx neu geladen wurde. Verwenden Sie daher in Windows für Nginx einfach keinen Alias.

TonyTony
quelle
Für nginx 1.5.6 funktioniert das folgende Setup: alias ../../cde/folder;Angenommen, Ihre Datei nginx.exe befindet sich unter d: / abc / nginx, der zu aliasende Ordner jedoch unter d: / cde /. Einige Quellen erwähnen, dass Nginx mit dem Pfad fest codiert /cygdrive/c/nginx/wurde. In diesem Fall alias /cygdrive/d/path/sollte es verwendet werden, aber das funktioniert bei mir nicht. Erwähnenswert ist auch, dass der Schrägstrich am Ende des Alias-Pfads nicht vernachlässigt werden darf.
TonyTony
Ich versuche, nginx.conf von Linux auf win10 zu migrieren. Die ausführbaren Dateien von nginx befinden sich in C: \ nginx, während sich die bereitgestellten Dateien in D: / bellaria_web / haus befinden. Der Kontext 'root D: / bellaria_web / haus /;' scheint nicht zu funktionieren. Kann jemand erklären, was los ist?
AAG
0

Für Nginx unter Windows müssen Sie diese Methode verwenden:

lage / foo {

root C: // pathtoyourfile / folder1 / folder2;

} Wobei foo ein tatsächlicher Ordner in folder2 ist

chedlywalid
quelle