ПРОЕКТЫ 


  АРХИВ 


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 ошибке



On Thu, 23 Jun 2005, Andrew Velikoredchanin wrote:

Igor Sysoev wrote:
On Thu, 23 Jun 2005, Andrew Velikoredchanin wrote:

Вот такая задача есть:

На странице отображается картинка.
Она берется с бэкэндов с их перебором пока не найдется.
Если она не нашлась - нужно по 404 ошибке перенаправить запрос на бэкэнд на cgi скрипт pic404.cgi на бэкэнде, который должен выдать картинку в зависимости от url оригинальной картинки.

Это возможно?

Больше всего меня интересует, получу-ли я в pic404.cgi оригинальный урл?


Оригинальный URI живёт в переменной $request_uri. Её можно передавать
с помощью proxy_set_header и fastcgi_param.

error_page  404  /pic404.cgi;
location = /pic404.cgi {
    internal;
    proxy_pass        http://backend/pic404.cgi;
    proxy_set_header  X-URI  $request_uri;
}

Что-то не получается. :(

Вот примерно что в конфиге фронтэнда:

location / {
  proxy_pass  http://back.cluster/;
  proxy_next_upstream   error timeout invalid_header http_500 http_404;
...
}

location /thumbnails/ {
  proxy_pass  http://back.cluster:81/thumbnails/;
  proxy_next_upstream   error timeout invalid_header http_500 http_404;
  expires 30d;
  error_page  404  /pic404.cgi;
...
}

В таком варианте при запросе несуществующей картинки из /thumbnails/ он почему-то не переходит на 404 страницу на фронтэнде, а выдает 404 страницу, которую выдал бэкэнд (я это заметил, т.к. на бэкэнде у меня стоит старая версия nginx, которая и должна выдавать эти картинки).

Это глюк или я что-то не так прописал?

Нужно ещё добавить

location /thumbnails/ {
     proxy_redirect_errors  on;

для того, чтобы error_page обрабатывал ошибки от прокси.
Для FastCGI нужно "fastcgi_redirect_errors  on".


Игорь Сысоев
http://sysoev.ru




 




Copyright © Lexa Software, 1996-2009.