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