Re: nginx искажает проксированный контент

Igor Sysoev igor на sysoev.ru
Чт Авг 4 07:27:00 UTC 2011


On Thu, Aug 04, 2011 at 02:51:05AM -0400, a.a.vasiljev wrote:
> Одна только downgrade-1.0 тоже работает,
> проверил.

Судя по исходникам, не должно.

downgrade-1.0 только делает входящий запрос 1.0:

    /* Note that we must downgrade before checking for force responses. */
    if (r->proto_num > HTTP_VERSION(1,0)
        && apr_table_get(r->subprocess_env, "downgrade-1.0")) {
        r->proto_num = HTTP_VERSION(1,0);
    }

А он у нас и так 1.0.

force-no-vary
1)_ убирает Vary (не критично в данном случае),
2) делает входящий запрос 1.0 и
3) включает force-response-1.0:

    if (apr_table_get(r->subprocess_env, "force-no-vary") != NULL) {
        apr_table_unset(r->headers_out, "Vary");
        r->proto_num = HTTP_VERSION(1,0);
        apr_table_set(r->subprocess_env, "force-response-1.0", "1");
    }

force-response-1.0:
1) выставляет 1.0 в ответе и
2) запрещает keepalive:

    if (r->proto_num == HTTP_VERSION(1,0)
        && apr_table_get(r->subprocess_env, "force-response-1.0")) {
        *protocol = "HTTP/1.0";
        r->connection->keepalive = AP_CONN_CLOSE;
    }

В сумме это должно привести к выключению chunked ответов.

Исходя из вышеописанного, необходимым и достаточным условием в данном
случае является только force-response-1.0.


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



Подробная информация о списке рассылки nginx-ru