Хитрое перенаправление по 404 ошибке

Andrew Velikoredchanin andrew at rodtext.ru
Thu Jun 23 14:06:05 MSD 2005


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, которая и должна выдавать эти картинки).

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

-- 
Best regards, Andrew Velikoredchanin





More information about the nginx-ru mailing list