Comment spécifier les chemins d'accès aux fichiers Windows dans nginx


22

J'utilise la version officielle de Windows de nginx. Je veux spécifier l'équivalent Windows de cette configuration

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

Comment spécifier les chemins de fichiers Windows dans la directive alias? Est-ce seulement possible?

Réponses:


17

Ces réponses doivent être obsolètes. L'utilisation des chemins absolus de nginx 1.3.8 avec des barres obliques fonctionne. Les barres obliques inverses semblent fonctionner, mais devraient être doublées. S'ils ne le sont pas, certains, comme un tiret, \"sont pris à la lettre.

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

Les guillemets peuvent ne pas être requis, mais ils semblent être une bonne idée dans le cas d'espaces intégrés.

Une autre chose que j'ai remarquée est qu'il est important de faire correspondre le chemin de l'url et de l'alias concernant la fin ou non d'une barre oblique - une incompatibilité et cela ne fonctionne pas.


Fonctionne toujours dans nginx 1.8.1
Daniel

Vos conseils pour utiliser des guillemets pour gérer les espaces blancs m'ont beaucoup aidé!
Beat

5

Si vous essayez de spécifier un chemin absolu comme ...

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

... puis en demandant un fichier à partir de cet emplacement, vous verrez probablement des erreurs dans C: \ nginx \ logs \ error.log comme:

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

Lors de la configuration de nginx sous Windows, spécifiez tous les chemins relatifs au répertoire C: \ nginx. Cela marche:

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

Personnellement, j'étais heureux d'apprendre cela car cela rend mes configurations nginx un peu plus portables entre Windows et Linux que je ne m'y attendais. Pour transformer un fichier de configuration Linux en un fichier qui fonctionne sous Windows, pour moi, c'est simplement:

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

Cela fonctionne avec nginx 1.9.10, merci!
NenadP

2

Vous pouvez essayer ceci:

  1. copiez vos fichiers statiques dans nginx / html / staticfiles
  2. défini dans nginx.conf

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


1

semble que l'alias ne fonctionne pas du tout pour mon système Windows. J'ai essayé de taper

alias "c:"

mais même cela ne fonctionne pas. Et je ne trouve pas de moyen de sortir l'emplacement après le rechargement du fichier de configuration par nginx. Donc, n'utilisez simplement pas d'alias dans Windows pour nginx.


Pour nginx 1.5.6, la configuration suivante fonctionne alias ../../cde/folder;:, supposez que votre nginx.exe se trouve dans d: / abc / nginx, mais le dossier que vous essayez d'alias se trouve dans d: / cde / dossier. Certaines sources mentionnent que nginx a été codé en dur avec le chemin d'accès /cygdrive/c/nginx/, auquel cas alias /cygdrive/d/path/il convient de l'utiliser, mais cela ne fonctionne pas pour moi. Méritent également de mentionner que la barre oblique à la fin du chemin d'alias ne doit pas être négligée.
TonyTony

J'essaie de migrer nginx.conf de linux vers win10. Les exécutables nginx sont en C: \ nginx, tandis que les fichiers servis sont sur D: / bellaria_web / haus. Le contexte 'root D: / bellaria_web / haus /;' ne semble pas fonctionner. Quelqu'un peut-il expliquer ce qui ne va pas?
AAG

0

Pour Nginx sur Windows, vous devez utiliser cette méthode:

emplacement / foo {

racine C: // pathtoyourfile / folder1 / folder2;

} où foo est un dossier réel dans folder2

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.