Как мне указать пути к файлам Windows в nginx

22

Я использую официальную версию Windows nginx. Я хочу указать Windows эквивалент этой конфигурации

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

Как мне указать пути к файлам Windows в директиве псевдонима? Это вообще возможно?

Васил
источник

Ответы:

17

Эти ответы должны быть устаревшими. Использование абсолютных путей nginx 1.3.8 с прямой косой чертой работает. Обратная косая черта, кажется, работает, но должна быть удвоена. Если их нет, то некоторые, такие как трейлинг \", воспринимаются буквально.

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

Кавычки могут не требоваться, но они кажутся хорошей идеей в случае встроенных пробелов.

Еще одна вещь, которую я заметил, - это то, что важно сопоставить путь URL и псевдонима в отношении окончания с косой чертой или нет - несоответствие, и это не работает.

Гринго Суаве
источник
Все еще работает в nginx 1.8.1
Даниэль
Ваш совет использовать кавычки для обработки пробелов мне очень помог!
Удар
5

Если вы попытаетесь указать абсолютный путь, как ...

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

... затем при запросе файла из этого места вы, вероятно, увидите ошибки в C: \ nginx \ logs \ error.log, например:

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

При настройке nginx в Windows укажите любые пути относительно каталога C: \ nginx. Это работает:

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

Лично я был счастлив узнать об этом, потому что это делает мои конфигурации nginx немного более переносимыми между Windows и Linux, чем я ожидал. Чтобы превратить файл конфигурации Linux в тот, который работает в Windows, для меня это просто:

s|/home/myname/|../Users/Myname|
Джейкоб Ван
источник
Это работает с nginx 1.9.10, спасибо!
NenadP
2

Вы можете попробовать это:

  1. скопируйте ваши статические файлы в nginx / html / staticfiles
  2. установить в nginx.conf

    location / static / {псевдоним / nginx / html / staticfiles /; }

Валерий Викторовский
источник
1

кажется, что псевдоним вообще не работает для моей системы Windows. Я пытался набрать

alias "c:"

но даже это не работает. И я не могу найти способ вывода местоположения после перезагрузки файла конфигурации с помощью nginx. Так что просто не используйте псевдоним в Windows для nginx.

TonyTony
источник
Для nginx 1.5.6 работает следующая установка: alias ../../cde/folder;предположим, что ваш файл nginx.exe находится в каталоге d: / abc / nginx, а папка, в которой вы пытаетесь создать псевдоним, - в папке d: / cde /. Некоторые источники упоминают, что nginx был жестко запрограммирован с путем /cygdrive/c/nginx/, в этом случае alias /cygdrive/d/path/следует использовать, но это не работает для меня. Также стоит упомянуть, что косой чертой в конце пути псевдонима не следует пренебрегать.
TonyTony
Я пытаюсь перенести nginx.conf из linux в win10. Исполняемые файлы nginx находятся в C: \ nginx, а обслуживаемые файлы - в D: / bellaria_web / haus. Контекст «корень D: / bellaria_web / haus /;» не похоже на работу. Может кто-нибудь объяснить, что не так?
августа
0

Для Nginx в Windows вы должны использовать этот метод:

location / foo {

root C: // pathtoyourfile / folder1 / folder2;

} где foo - это фактическая папка внутри folder2

chedlywalid
источник