ПРОЕКТЫ 


  АРХИВ 


Apache-Talk @lexa.ru 

Inet-Admins @info.east.ru 

Filmscanners @halftone.co.uk 

Security-alerts @yandex-team.ru 

nginx-ru @sysoev.ru 


  СТАТЬИ 


  ПЕРСОНАЛЬНОЕ 


  ПРОГРАММЫ 



ПИШИТЕ
ПИСЬМА












     АРХИВ :: nginx-ru
Nginx-ru mailing list archive (nginx-ru@sysoev.ru)

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Ещё раз про обработку 404-й ошибки, но без FastCGI


  • To: nginx-ru@xxxxxxxxx
  • Subject: Re: Ещё раз про обработку 404-й ошибки, но без FastCGI
  • From: "Виктор Вислобоков" <corochoone@xxxxxxxxx>
  • Date: Wed, 4 Jul 2007 15:42:30 +0400
  • Dkim-signature: a=rsa-sha1; c=relaxed/relaxed; d=gmail.com; s=beta; h=domainkey-signature:received:received:message-id:date:from:to:subject:in-reply-to:mime-version:content-type:references; b=mthWp6V+KTQqzj7FHp6sBEhb2gZdKY/QHHnvrfcPMX7PESBLNDLFWumepXDlxN+IzC/M92sLgR0uYYDXun9Y/umNMHgkoQQull3btLBefoYiYGgbg7bArYn9heDsgCvrRFyX6a/yyfyEwGLUhj2+GDpGvdZ3t/BkDw8rPgcrkUc=
  • Domainkey-signature: a=rsa-sha1; c=nofws; d=gmail.com; s=beta; h=received:message-id:date:from:to:subject:in-reply-to:mime-version:content-type:references; b=WaI94mZipuGWTN+jQ5/TmBD6NGegpofmSQrjzugiLHZZFI++G2THr5QBhGuzCtvHui/nktG6NEE2ozADJDuFTGtKQ9OoZWJw79By1CxYYpcA8B3/KfDjv38McHLVn6crln+NXXqn4iumEAPQ1kMdqwqXmpnnwnUcjRbL/pWUL/8=
  • In-reply-to: <468B57F3.000001.07716@xxxxxxxxxxxxxxxxx>
  • References: <1f60b6160707032250q11a654c2jea770322f7d7ca37@xxxxxxxxxxxxxx> <468B57F3.000001.07716@xxxxxxxxxxxxxxxxx>


"обработчик 404-й ошибки в php" - если честно непонятно что именно Вы хотите получить.

Объясняю. Есть у меня например CMS. В этой CMS есть каталог /downloads. На странице размещены ссылки:
http://www.site.ru/downloads/stuff.zip. Но самого файла stuff.zip в каталоге /downloads нет. При клике на ссылку срабатывает редирект по 404-й ошибке на скрипт downloads.php который берёт файлы из специального места и подставляет их на скачивание.
 
Когда apache работает один - всё нормально. Когда я ставлю перед ним nginx, то nginx сам пытается отдать stuff.zip, но его там нет. После чего nginx честно выдаёт страничку Not found.

Да, конечно, я могу создать специальный location где nginx не будет задействован, но меня так не устраивает. Ладно когда сайт мой, а если клиенты свои каталоги для скачки создадут по подобному же способу через 404-ю ошибку? Поэтому я и хочу, чтобы если nginx не находит файл, он просто этот же запрос отдавал бы apache не пытаясь ничего никуда перенаправлять.

То что вы предложили ведёт себя очень странно:
по proxy_pass http://127.0.0.1:80; у меня открывается мой сайт на ЛОКАЛЬНОМ ХОСТЕ :)
Прикольно, конечно, но несколько не то, что я бы хотел.

Вариант 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@xxxxxxxxx
| ICQ.work: 227-270-674
| Tel.mobile: 8 (926) 528-0898





 




Copyright © Lexa Software, 1996-2009.