Jak określić ścieżki plików systemu Windows w Nginx

22

Używam oficjalnej wersji nginx dla systemu Windows. Chcę określić odpowiednik tej konfiguracji systemu Windows

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

Jak określić ścieżki plików systemu Windows w dyrektywie dotyczącej aliasów? Czy to w ogóle możliwe?

Wasil
źródło

Odpowiedzi:

17

Te odpowiedzi muszą być nieaktualne. Działa użycie ścieżek bezwzględnych nginx 1.3.8 z ukośnikami do przodu. Odwrotne ukośniki wydają się działać, ale należy je podwoić. Jeśli nie są, niektóre, takie jak końcowe, \"są traktowane dosłownie.

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

Cytaty mogą nie być wymagane, ale wydają się dobrym pomysłem w przypadku osadzonych przestrzeni.

Inną rzeczą, którą zauważyłem, jest to, że ważne jest, aby dopasować adres URL i ścieżkę aliasu dotyczącą kończenia ukośnikiem końcowym czy nie - niedopasowanie i to nie działa.

Gringo Suave
źródło
Nadal działa w Nginx 1.8.1
Daniel
Twoje porady dotyczące używania cudzysłowów do obsługi białych znaków pomogły mi bardzo!
Pokonaj
5

Jeśli spróbujesz podać ścieżkę bezwzględną, taką jak ...

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

... wtedy po zażądaniu pliku z tej lokalizacji prawdopodobnie zobaczysz błędy w C: \ nginx \ logs \ error.log, takie jak:

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

Konfigurując nginx w systemie Windows, podaj ścieżki w stosunku do katalogu C: \ nginx. To działa:

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

Osobiście z przyjemnością się tego nauczyłem, ponieważ sprawia, że ​​moje konfiguracje nginx są nieco bardziej przenośne między Windows i Linuxem, niż się spodziewałem. Aby zmienić plik konfiguracyjny Linuksa na taki, który działa w systemie Windows, dla mnie jest to po prostu:

s|/home/myname/|../Users/Myname|
Jacob Wan
źródło
Działa z Nginx 1.9.10, Dzięki!
NenadP,
2

Możesz spróbować:

  1. skopiuj swoje pliki statyczne do nginx / html / staticfiles
  2. ustaw na nginx.conf

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

Valery Viktorovsky
źródło
1

wygląda na to, że alias w ogóle nie działa w moim systemie Windows. Próbowałem pisać

alias "c:"

ale nawet to nie działa. Nie mogę znaleźć sposobu na wyprowadzenie lokalizacji po ponownym załadowaniu pliku konfiguracyjnego przez nginx. Więc po prostu nie używaj aliasu w Windows dla Nginx.

TonyTony
źródło
W przypadku Nginx 1.5.6 działa następująca konfiguracja: alias ../../cde/folder;załóżmy, że plik nginx.exe znajduje się w folderze d: / abc / nginx, ale folder, który próbujesz uzyskać alias, znajduje się w folderze d: / cde /. Niektóre źródła wspominają, że nginx został zakodowany na stałe ze ścieżką /cygdrive/c/nginx/, w takim przypadku alias /cygdrive/d/path/należy go użyć, ale to nie działa dla mnie. Warto również wspomnieć, że ukośnik na końcu ścieżki aliasu nie powinien być pomijany.
TonyTony,
Próbuję migrować plik nginx.conf z systemu Linux na system win10. Pliki wykonywalne nginx znajdują się w C: \ nginx, podczas gdy obsługiwane pliki znajdują się w D: / bellaria_web / haus. Kontekst „root D: / bellaria_web / haus /;” wydaje się nie działać. Czy ktoś może wyjaśnić, co jest nie tak?
śr.
0

W przypadku Nginx w systemie Windows musisz użyć tej metody:

lokalizacja / foo {

root C: // pathtoyourfile / folder1 / folder2;

} gdzie foo jest właściwym folderem w folderze 2

chedlywalid
źródło