Директива if - часть ngx_http_rewrite_module. ЕМНИП, все обработчики этого модуля вызываются до начала работы с upstream. Поэтому в данном контексте конструкция if не имеет смысла, так как nginx еще не передал запрос на backend.
20 декабря 2012 г., 10:27 пользователь F1restorm <nginx-forum@xxxxxxxx> написал:
> Hello!
>
> On Wed, Dec 19, 2012 at 10:09:13AM -0500, F1restorm wrote:
>
> > Как сделать работоспособной следующую конструкцию? Нужно показывать
> разные
> > страницы ошибок в зависимости от content type из response.
> >
> > location / {
> > if ($response_content_type = application/xml) {
> > error_page 5xx /error_5xx.html;
> > }
> > }
> >
> > Переменная $content_type содержит значение от request и не подходит.
> > Переменной типа $response_content_type не нашел.
>
> Как вы собираетесь узнать Content-Type ответа до того, как
> выберете, какой именно ответ послать?
Я хочу узнать Content-Type ответа бэкэнда, а не Content-Type ответа
пользователю. Клиент обращается к nginx, nginx перенаправляет запрос на
бэкэнд, бэкэнд отвечает кодом ошибки. В этот момент я хочу узнать
Content-Type ответа бэкэнда и в зависимости от него ответить пользователю
той или иной страницей с описанием ошибки.