Apache. Transfer-Encoding: chunked - как отключить?

12
mustafa
На сайте с 28.10.2005
Offline
202
15386

Как отключается сжатие(Transfer-Encoding: chunked) в апаче?

Shtogrin
На сайте с 02.11.2006
Offline
95
#1

Если неизвестен заголовок "Content-Length" (для HTTP/1.1) Apache передаёт ответ чанками (chunks) и добавляет заголовок "Transfer-Encoding: chunked".

Для mod_gzip есть директива "mod_gzip_dechunk Yes".

В остальных случаях, не проверял, если отдавать Content-Length, то chunked не будет.

www.shtogrin.com (http://www.shtogrin.com/). Канцтовары (http://www.invit.com.ua/). 1С Бухгалтерия (http://account.kiev.ua/).
mustafa
На сайте с 28.10.2005
Offline
202
#2
Shtogrin:
Если неизвестен заголовок "Content-Length" (для HTTP/1.1) Apache передаёт ответ чанками (chunks) и добавляет заголовок "Transfer-Encoding: chunked".
Для mod_gzip есть директива "mod_gzip_dechunk Yes".

мануалы я уже читал :) mod_gzip не стоит. Поставить mod_gzip, чтобы отключить сжатие? :))

Shtogrin:
В остальных случаях, не проверял, если отдавать Content-Length, то chunked не будет.

как его принудительно отдавать? Просто апач стоит бэкэндом и совсем не нужно, чтобы он что-то сжимал. Нужен чистый text/html.

Shtogrin
На сайте с 02.11.2006
Offline
95
#3
mustafa:
мануалы я уже читал :) Поставить mod_gzip, чтобы отключить сжатие? :))

Нет. Если бы он это делал, то можно было бы отключить.

mustafa:

Просто апач стоит бэкэндом и совсем не нужно, чтобы он что-то сжимал. Нужен чистый text/html.

Для браузеров это не мешает. Возможно вы грузите скриптом что-то с апача и вам мешает chunked. Тогда можно посылать запросы HTTP/1.0 - апач должен разобраться. Или сделать это для определенного USER-AGENT, например,

BrowserMatch "myrobot" force-response-1.0

Вы динамически генерируете содержимое (тогда отдавайте свой заголовок Content-Length из скрипта) или апач дает chunked на статический файл?

dema501
На сайте с 03.03.2003
Offline
64
#4

mustafa

была такая же проблема

- фронтенд ngnix HTTP/1.0

- бекенд apache HTTP/1.1

решил так


header($_SERVER['SERVER_PROTOCOL'].' 200 OK');
header($_SERVER['SERVER_PROTOCOL'].' 404 Not Found');

Интерсны конечно и другие решения

Shtogrin
На сайте с 02.11.2006
Offline
95
#5

Можно заставить апач работать как HTTP/1.0

SetEnv force-no-vary

SetEnv downgrade-1.0
mustafa
На сайте с 28.10.2005
Offline
202
#6
dema501:
mustafa

была такая же проблема
- фронтенд ngnix HTTP/1.0
- бекенд apache HTTP/1.1

решил так


header($_SERVER['SERVER_PROTOCOL'].' 200 OK');
header($_SERVER['SERVER_PROTOCOL'].' 404 Not Found');


Интерсны конечно и другие решения

не вариант :( Там около 500 сайтов - все на разных движках и т.п.

Shtogrin:
Можно заставить апач работать как HTTP/1.0
SetEnv force-no-vary
SetEnv downgrade-1.0

спасибо! Работает :)

200 OK
Date: Sat, 13 Oct 2007 10:36:02 GMT
Server: Apache/1.3.37 (Unix) mod_ssl/2.8.28 OpenSSL/0.9.7e
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Pragma: no-cache
Connection: close
Content-Type: text/html
Roxis
На сайте с 19.11.2006
Offline
40
#7

а зачем понадобилось отключить chunked transfer coding?

mustafa
На сайте с 28.10.2005
Offline
202
#8
Roxis:
а зачем понадобилось отключить chunked transfer coding?

Для клиента nginx грамотнее и быстрее сожмет в gzip, чем апач в chunked. Они все равно физически сидят на одном серваке и сжатие трафа между ними - лишнее..

Roxis
На сайте с 19.11.2006
Offline
40
#9

chunked transfer coding не сжатие

nginx с бакендом говорит на http/1.0, а значит без chunked

dema501
На сайте с 03.03.2003
Offline
64
#10

нет Roxis nginx спрашивает апач на http/1.0, а вот апач может ответить на

http/1.1 с помощью тогоже пхп

12

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий