¿Cómo especifico las rutas de archivos de Windows en nginx?

22

Estoy usando la versión oficial de Windows de nginx. Quiero especificar el equivalente de Windows de esta configuración

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

¿Cómo especifico rutas de archivos de Windows en la directiva de alias? ¿Es esto posible?

Vasil
fuente

Respuestas:

17

Estas respuestas deben estar desactualizadas. Usar nginx 1.3.8 rutas absolutas con barras diagonales funciona. Las barras invertidas parecen funcionar, pero deberían duplicarse. Si no lo son, algunos, como un seguimiento, \"se toman literalmente.

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

Las comillas pueden no ser necesarias, pero parecen una buena idea en caso de espacios incrustados.

Otra cosa que noté es que es importante hacer coincidir la ruta de URL y alias con respecto a terminar con una barra inclinada o no, una falta de coincidencia y no funciona.

Gringo Suave
fuente
Todavía funciona en nginx 1.8.1
Daniel
¡Tu consejo para usar comillas para manejar espacios en blanco me ayudó mucho!
Venció el
5

Si intenta especificar una ruta absoluta como ...

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

... luego de solicitar un archivo desde esa ubicación, probablemente verá errores en C: \ nginx \ logs \ error.log como:

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

Al configurar nginx en Windows, especifique cualquier ruta relativa al directorio C: \ nginx. Esto funciona:

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

Personalmente, me alegró aprender esto porque hace que mis configuraciones nginx sean un poco más portátiles entre Windows y Linux de lo que esperaba. Para convertir un archivo de configuración de Linux en uno que funcione en Windows, para mí es básicamente:

s|/home/myname/|../Users/Myname|
Jacob Wan
fuente
Esto funciona con nginx 1.9.10, ¡Gracias!
NenadP
2

Puedes probar esto:

  1. copie sus archivos estáticos en nginx / html / staticfiles
  2. establecer en nginx.conf

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

Valery Viktorovsky
fuente
1

Parece que el alias no funciona para mi sistema Windows. Traté de escribir

alias "c:"

Pero incluso esto no funciona. Y no puedo encontrar una manera de generar la ubicación después de que nginx vuelva a cargar el archivo de configuración. Así que simplemente no use alias en windows para nginx.

TonyTony
fuente
Para nginx 1.5.6, la siguiente configuración funciona: alias ../../cde/folder;supongamos que su nginx.exe se ubica en d: / abc / nginx, pero la carpeta que intenta alias se ubica en d: / cde / folder. Algunas fuentes mencionan que nginx fue codificado con la ruta /cygdrive/c/nginx/, en cuyo caso alias /cygdrive/d/path/debería usarse, pero esto no funciona para mí. También merece mencionar que la barra diagonal al final de la ruta de alias no debe ser descuidada.
TonyTony
Estoy tratando de migrar nginx.conf de linux a win10. Los ejecutables nginx están en C: \ nginx, mientras que los archivos servidos están en D: / bellaria_web / haus. El contexto 'raíz D: / bellaria_web / haus /;' no parece funcionar ¿Alguien puede explicar lo que está mal?
aag
0

Para Nginx en Windows, debe usar este método:

ubicación / foo {

raíz C: // pathtoyourfile / folder1 / folder2;

} donde foo es una carpeta real dentro de folder2

chedlywalid
fuente