Come posso specificare i percorsi dei file di Windows in nginx


22

Sto usando la versione ufficiale di Windows di nginx. Voglio specificare l'equivalente di Windows di questa configurazione

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

Come posso specificare i percorsi dei file di Windows nella direttiva alias? È possibile?

Risposte:


17

Queste risposte devono essere obsolete. L'uso di nginx 1.3.8 percorsi assoluti con barre dirette funziona. Le barre rovesciate sembrano funzionare, ma dovrebbero essere raddoppiate. Se non lo sono, alcuni, come un trailing, \"sono presi alla lettera.

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

Le virgolette potrebbero non essere richieste, ma sembrano una buona idea in caso di spazi incorporati.

Un'altra cosa che ho notato è che è importante abbinare il percorso url e alias per quanto riguarda la fine con una barra finale o meno - una mancata corrispondenza e non funziona.


Funziona ancora in nginx 1.8.1
Daniel

Il tuo consiglio di usare le virgolette per gestire gli spazi bianchi mi ha aiutato molto!
Batti il

5

Se provi a specificare un percorso assoluto come ...

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

... quindi su richiesta di un file da quella posizione, probabilmente vedrai errori in C: \ nginx \ logs \ error.log come:

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

Quando si configura nginx su Windows, specificare tutti i percorsi relativi alla directory C: \ nginx. Questo funziona:

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

Personalmente, sono stato felice di saperlo perché rende le mie configurazioni nginx un po 'più portabili tra Windows e Linux di quanto mi aspettassi. Per trasformare un file di configurazione Linux in uno che funziona su Windows, per me è sostanzialmente solo:

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

Funziona con nginx 1.9.10, grazie!
NenadP,

2

Puoi provare questo:

  1. copia i tuoi file statici in nginx / html / staticfiles
  2. impostato in nginx.conf

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


1

sembra che l'alias non funzioni affatto per il mio sistema Windows. Ho provato a scrivere

alias "c:"

ma anche questo non funziona. E non riesco a trovare un modo per generare l'ubicazione dopo che il file di configurazione è stato ricaricato da nginx. Quindi semplicemente non usare l'alias in Windows per nginx.


Per nginx 1.5.6, la seguente installazione funziona: alias ../../cde/folder;supponiamo che nginx.exe sia localizzato in d: / abc / nginx, ma la cartella che si tenta di alias si trova in d: / cde / cartella. Alcune fonti affermano che nginx è stato codificato con il percorso /cygdrive/c/nginx/, nel qual caso alias /cygdrive/d/path/dovrebbe essere usato, ma questo non funziona per me. Merita inoltre di menzionare che la barra in avanti alla fine del percorso alias non deve essere trascurata.
TonyTony,

Sto cercando di migrare nginx.conf da Linux a Win10. Gli eseguibili nginx sono in C: \ nginx, mentre i file serviti sono su D: / bellaria_web / haus. Il contesto 'root D: / bellaria_web / haus /;' non sembra funzionare. Qualcuno può spiegare cosa c'è che non va?
Aag,

0

Per Nginx su Windows devi usare questo metodo:

location / foo {

root C: // pathtoyourfile / folder1 / folder2;

} dove foo è una cartella reale all'interno di folder2

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.