Frage Wie gebe ich Windows-Dateipfade in nginx an?


Ich benutze 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-Anweisung an? Ist das überhaupt möglich?


21
2017-08-03 17:43


Ursprung




Antworten:


Diese Antworten müssen veraltet sein. Die Verwendung von nginx 1.3.8 absoluten Pfaden mit Schrägstrichen funktioniert. Backslashes scheinen zu funktionieren, sollten aber verdoppelt werden. Wenn sie nicht sind, dann einige, wie ein Nachlauf \" sind 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, aber im Fall von eingebetteten Leerzeichen scheinen sie eine gute Idee zu sein.

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


14
2017-11-08 03:53



Funktioniert immer noch in nginx 1.8.1 - Daniel
Ihr Rat, Zitate zu verwenden, um mit Leerzeichen umzugehen, hat mir sehr geholfen! - Beat


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

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

... Wenn Sie eine Datei von diesem Speicherort anfordern, werden wahrscheinlich Fehler in C: \ nginx \ logs \ error.log angezeigt:

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 beliebige Pfade relativ zum Verzeichnis C: \ nginx an. Das funktioniert:

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

Persönlich war ich froh, das zu lernen, weil es meine nginx-Konfigurationen zwischen Windows und Linux ein wenig portabler macht, als ich es erwartet hatte. Um eine Linux-Konfigurationsdatei in eine zu konvertieren, die unter Windows funktioniert, ist es für mich im Grunde nur:

s|/home/myname/|../Users/Myname|

5
2017-11-11 21:09



Dies funktioniert mit nginx 1.9.10, Danke! - NenadP


Sie können dies versuchen:

  1. Kopiere deine statischen Dateien in nginx / html / staticfiles
  2. set in nginx.conf

    Standort / statisch / {     alias / nginx / html / statische Dateien /; }


2
2017-08-03 19:11





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

alias "c:"

aber selbst das funktioniert nicht. Und ich finde keine Möglichkeit, den Speicherort auszugeben, nachdem die Konfigurationsdatei von nginx neu geladen wurde. Also benutze einfach keinen Alias ​​in Windows für nginx.


1
2017-10-26 09:33



Für nginx 1.5.6 funktioniert das folgende Setup: alias ../../cde/folder;Nehmen wir an, Ihr nginx.exe-Programm findet sich unter d: / abc / nginx, aber der Ordner, den Sie mit dem Aliasnamen versuchen, wird im Ordner d: / cde / gefunden. Einige Quellen erwähnen, dass nginx mit dem Pfad fest codiert war /cygdrive/c/nginx/, in welchem ​​Fall alias /cygdrive/d/path/ sollte verwendet werden, aber das funktioniert nicht für mich. Erwähnenswert ist auch, dass der Schrägstrich am Ende des Alias-Pfades nicht vernachlässigt werden sollte. - TonyTony
Ich versuche, nginx.conf von Linux zu 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 falsch ist? - aag