ПРОЕКТЫ 


  АРХИВ 


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[2]: nginx-0.6.30



Hello Mihal,

Tuesday, April 29, 2008, 9:35:56 PM, you wrote:

> Denis F. Latypoff wrote:
>> 
>> Я извиняюсь за настойчивость, но для меня проблема актуальна, вот её 
>> описание:
>> http://www.lexa.ru/nginx-ru/msg17278.html, если честно, то я ожидал фикса в
>> 0.6.30 :)

> ------snip------
>>   Неожиданно заметил, что если апстрим отвечает с контентом, то заголовок P3P
>>   передается клиенту. Если апстрим отвечает без контента, но с заголовком
>>   X-Accel-Redirect, то nginx не пропускает клиенту заголовок P3P.
>> 
> ------snip------

> Дело в том, что X-Accel-Redirect обрабатывает только фиксированное
> множество заголовков, а остальные удаляет. Меня эта проблема тоже задевает:
> http://www.lexa.ru/nginx-ru/msg16840.html

IMHO, достаточно для значений директив proxy_pass_header и fastcgi_pass_header
нужно выставить redirect = 1:

ngx_http_upstream.h:156:

typedef struct {
    ngx_str_t                       name;
    ngx_http_header_handler_pt      handler;
    ngx_uint_t                      offset;
    ngx_http_header_handler_pt      copy_handler;
    ngx_uint_t                      conf;
    ngx_uint_t                      redirect;  /* unsigned   redirect:1; */
} ngx_http_upstream_header_t;


при парсинге конфига, и тогда


ngx_http_upstream.c:1272:

            hh = ngx_hash_find(&umcf->headers_in_hash, h[i].hash,
                               h[i].lowcase_key, h[i].key.len);

            if (hh && hh->redirect) {
                /*
                 * вот здесь значения директив proxy_pass_header и
                 * fastcgi_pass_header скопируются клиенту
                 */
                if (hh->copy_handler(r, &h[i], hh->conf) != NGX_OK) {
                    ngx_http_finalize_request(r,
                                              NGX_HTTP_INTERNAL_SERVER_ERROR);
                    return;
                }
            }

только я не знаю, где выставить redirect = 1.

-- 
Best regards,
 Denis                            mailto:denis@xxxxxxxxxx




 




Copyright © Lexa Software, 1996-2009.