@noprof

Nginx если файл не найден, передать запрос на php script, как?

В общем если кратко:
Есть некое приложение, которое извлекает файлы из определенного архива. Извлекатор написан на php, и работает следующим образом:

1.) Происходит переход на какой-то ресурс в браузере, допустим на domain.com/data/file.txt
2.) Веб-сервер лезет в /data/file.txt, если файл обнаружен - то просто отдает его.
3.) Если файл не обнаружен, то происходит вызов /client/index.php (оно же извлекатор) с параметром ссылки ненайденного файла.

Т.е. проиходит запрос на nginx
domain.com/somefolder/blabla.bmp
nginx полез в /somefolder и не нашел blabla.bmp
Nginx из-за того что ненашел blabla.bmp должен вызвать /client/index.php в аргументом ненайденного файла для того, что бы /client/index.php мог открыть архивы которые заложены в его логике, отыскать необходимый файл, и извлечь его в папку, а уже после этого отобразить.

Проще невозможно описать ситуацию.
Под апачем проблем нет, там используются опции: AllowOverride All (т.е. читать .htaccess) в которых написано: ErrorDocument 404 /client/index.php и всё. И вот это вгоняет меня в ступор, и никаких доп. изменений не нужно делать нигде.

Вопрос: как всё вышеописанное организовать под nginx + php5-fpm?

P.S. (тут речь идет о браузерной версии клиента к одной ММОРПГ (https://github.com/vthibault/roBrowser))
P.S. ссылка на их .htaccess
P.S. ссылка на сам извлекатор /client/index.php

Помогите пожалуйста.

P.S. думаю по поводу try_files, но пока не могу сообразить...
Помогите:)
  • Вопрос задан
  • 4197 просмотров
Пригласить эксперта
Ответы на вопрос 1
@omsknews
ну как то так
location /
{
try_files $uri $uri/ /client/index.php;
}
location ~ \.php$ {.
include fastcgi_params;.
fastcgi_pass unix:/tmp/php-fpm.socket;.
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
location ~ /\.ht { deny all;}
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы