Estou migrando o nginx de uma VM Linux para o host Windows por motivos de desempenho e estou tendo problemas com esta parte.
No Linux a configuração é:
root /;
try_files /mnt/m$uri /mnt/d$uri /mnt/l$uri =404;
Onde /mnt/m, /mnt/d e /mnt/l são os pontos de montagem das unidades M:, D: e L: respectivamente.
No Windows eu tentei
root /;
try_files M:$uri D:$uri L:$uri =404;
mas gera esse erro
*1 GetFileAttributesEx() "C:L:/[...]" failed (123: The filename, directory name, or volume label syntax is incorrect)
Parece que /
é interpretado como a unidade C:, é a unidade a partir da qual o nginx é executado. Eu também tentei root ;
deixar a diretiva root completamente de fora, mas nada funcionou.
Responder1
Consegui fazer isso aninhando (?) Locais nomeados. Porém, tenha cuidado, pois quaisquer cabeçalhos/opções definidos no bloco de localização principal não se aplicarão aos locais nomeados, pelo menos na minha experiência. A solução do @IvanShatsky com pontos de montagem NTFS parece ser muito melhor.
location / {
root "M:\\";
try_files $uri $uri/ @ddrive;
}
location @ddrive {
root "D:\\";
try_files $uri $uri/ @ldrive;
}
location @ldrive {
root "L:\\";
try_files $uri $uri/ =404;
}
Responder2
Acho que o mklink no Windows pode ser uma solução.
https://docs.microsoft.com/en-us/windows-server/administration/windows-commands/mklink
Você pode vincular seu disco montado, por exemplo, C:\mnt\M, C:\mnt\D, C:\mnt\L com comandos como:
mklink /D C:\mnt\M M:
mklink /D C:\mnt\D D:
mklink /D C:\mnt\L L:
e depois em nginx.conf
...
root C:/mnt/;
try_files /M/$uri /D/$uri /L/$uri =404;
...