nginx возвращает частичный ответ - PullRequest
0 голосов
/ 22 февраля 2019

Наличие NGINX Plus с конфигурацией обратного прокси:

upstream busgw_services_backend {
 server esbacc002:8281;
 server esbacc004:8281;

 keepalive 32;
 zone busgw_services_backend 32k;
}

server {
    listen      443 ssl;
    listen      80;
    server_name busgw-acc;

    # some ssl settings

    location / {
       proxy_pass http://busgw_services_backend;
       proxy_set_header Host   $host;
       proxy_set_header X-Forwarded-For $remote_addr;

       health_check interval=2s passes=1  fails=2 uri=/services/healthcheck match=match_ok ;
    }

    access_log  /var/log/nginx/access.log  main if=$abnormal;
    error_log   /var/log/nginx/error.log   warn;
}

Как правило, эта конфигурация работает хорошо.Однако - у нас есть запрос, который возвращает только частичный ответ.

Внутренним ответом является WSDL с фрагментарным ответом длиной 0x13c6 (5062) байтов, возвращенным в одном фрагменте.Nginx возвращает только 0xf7a (3962) байтов, а затем не может сгенерировать дополнительные байты (или завершающий 0 порцию)

Есть ли ограничение размера порции?

Редактировать:

отключение буфера ответов привело к возвращению всего ответа (в виде двух отдельных чанков)

proxy_buffering off;

однако клиент не получает последний 0 чан, вызывающийв ожидании дополнительных данных

1 Ответ

0 голосов
/ 22 февраля 2019

В конце - следующие настройки, кажется, решают проблему

proxy_buffering off;
proxy_cache off;
proxy_http_version 1.1;
...