Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Администрирование Web серверов и Web служб > nginx, вынос мозга - почему не работает try_files


Автор: eurobax 11.7.2014, 23:19
Делаю защищенную директорию для скачки файлов.
Скачивать файлы можно по ссылке: хttp://сайт.ру/private/<uiserid:GUID>/<имя файла>
Хранятся они соответственно:  /userfiles/private/<uiserid:GUID>/<имя файла>

Например:
файл лежит в /userfiles/private/09b..32/1.png (где 09b..32 - это userid:GUID)
url для скачки выглядит так: xttp://сайт.ру/private/09b..32/1.png

Конфиг nginx (и это прекрасно работает):
Код
location ~/private/(.*)[/]?(.*)$ {
    root %hostdir%/userfiles/private/$1/;
    try_files $2 @files_private_failed;
}


Теперь сама трабла. Я выкурил много травы, и решил, что на сервере удобней организовать структуру папок иначе (папка private стала размещаться внутри <userid>):
Код
userfiles/
    <userid>/
        private/
        shared/


Изменил конфигу nginx:
Код
location ~/private/(.*)[/]?(.*)$ {
    root %hostdir%/userfiles/$1/private/; #Вроде элементарно, но не работает
    try_files $2 @files_private_failed;
}

И она перестала работать! Т.е. запрос проваливается на backend (через @files_private_failed, это не суть)
Я пробовал и сам try_files /private/$2, try_files private/$2 - тоже не работает

Вобщем, весь вопрос - как заставить понимать азбуку?
Я отлавливал в бэкенде параметры $1 и $2, все они "вырезаются" нормально, Пути и файлы на диске существуют. 

Что я делаю не так?

Автор: _zorn_ 21.7.2014, 16:43
Мало курил
http://nginx.org/ru/docs/
Будут вопросы - обращайся.
но субя по всему тебе нужен alias

Автор: eurobax 24.7.2014, 13:23
Да курил я.. и на форумах спрашивал - толку мало.
Решение нашел, причем случайно.
Вобщем, дело не в регулярном выражении, а именно в самом try_files. В документации про это не написано.
Если кому интересно, пишите в Л.С.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)