Назад | Перейти на главную страницу

nginx вставляет дополнительные символы в тело ответа с несколькими состояниями

Вот установка. У меня есть один сервер, на котором запущен apache / php hosting ownCloud. Среди прочего, я использую для синхронизации контактов CardDAV. Чтобы все работало с моим доменом, у меня есть сервер nginx, работающий во внешнем интерфейсе как обратный прокси для сервера ownCloud. Моя конфигурация nginx выглядит следующим образом:

server {
    listen       80;
    server_name  cloud.mydomain.com;

    location / {
        proxy_set_header X-Forwarded-Host cloud.mydomain.com;
        proxy_set_header X-Forwarded-Proto http;
        proxy_set_header X-Forwarded-For $remote_addr;
        client_max_body_size 0;
        proxy_redirect off;
        proxy_pass      http://server;
    }
}

Проблема в том, что когда мой телефон PROPFIND на сервере nginx добавляет в тело содержимого дополнительные символы, которые сбивают телефон. В частности, он добавляет d611\r\n в передней части тела и добавляет 0\r\n\r\n до конца содержания. (Я получил это от wirehark.) Он также повторно разбивает результат. Как заставить nginx отправлять исходный контент как есть?

Дополнительные символы, которые вы видите, - это формат кодирования фрагментированной передачи. Число - это длина фрагмента, а \r\nх разделители. Похоже, что телефон не поддерживает кодирование передачи по частям (хотя, если он заявляет, что поддерживает HTTP 1.1, он должен). Вы можете отключить кодирование передачи по частям с помощью chunked_transfer_encoding директива.

chunked_transfer_encoding off;