Re: Ещё раз про обработку 404-й ошибки, но без FastCGI
Roman R.Musin
xdevis at yandex.ru
Wed Jul 4 12:18:59 MSD 2007
>Здравствуйте.
>
>Возникла такая проблема. Нужно каким-то образом отдавать файлы через
>обработчик 404-й ошибки в php.
>С голимым apache всё нормально, nginx разумеется говорит, что файл Not Found
>и это правильно, потому что такого файла нет.
>Хотелось бы довольно простую вещь сделать - если на определённом Location
>nginx не нашёл файл, то чтобы он просто этот запрос, который вернул ошибку
>передал apache. Помоему это должно решить проблему или нет?
>
>Пробовал делать разные конструкции вида error_page 404, но так и ничего не
>добился - либо Not Found, либо запрос уходит apache, но не как для обработки
>404-й ошибки.
>
>Буду также рад любым советам как решить эту проблему. Работает связка
>nginx+apache+php. Без FastCGI. Не знаю важно это или нет, но PHP вызывается
>как просто CGI без mod_php.
"обработчик 404-й ошибки в php" - если честно непонятно что именно Вы хотите получить.
Вариант 1, через 404 ошибку, допустим имеется основная директория откуда нужно отдавать статику, если не нашлось файла - проксировать на backend, при обращении к PHP скриптам - сразу проксировать, запросы с POST параметрами тоже должны проксироваться (очевидно что это динамика):
location ~* \.php$ {
proxy_pass http://127.0.0.1:1234;
}
recursive_error_pages on;
location / {
if ($request_method = POST ) {
proxy_pass http://127.0.0.1:1234;
break;
}
root /usr/home/foo/bar/root;
error_page 404 = /backend$uri;
}
location /backend {
internal;
proxy_pass http://127.0.0.1:1234;
recursive_error_pages off;
}
Вариант 2, через конструкцию if:
location / {
if (!-e $request_filename) { proxy_pass http://127.0.0.1:1234; }
}
--
_____________________________________
| Best regards, Roman R.Musin.
| GooDoo.*
| eMail.work: xdevis at yandex.ru
| ICQ.work: 227-270-674
| Tel.mobile: 8 (926) 528-0898
More information about the nginx-ru
mailing list