nginx и proxy_pass - отправить Соединение: закрыть заголовки - PullRequest
5 голосов
/ 24 февраля 2011

nginx, кажется, заменяет заголовок Connection: close, который отправляет восходящий поток, и заменяет его заголовком Connection: keep-alive.Есть ли способ, которым я могу переопределить это?

http {
  upstream main {
    server 127.0.0.1:8000;
  }
  server {
    listen 443;
    ssl on;
    ssl_certificate server.crt;
    ssl_certificate_key server.key;
    location / {
      proxy_pass http://main;
    }
    location /find {
      proxy_pass http://main;
      proxy_buffering off;
    }
  }
}

Ответы [ 5 ]

3 голосов
/ 24 февраля 2011

Настройка keepalive_requests 0; убедил nginx отправить Connection: close.

2 голосов
/ 01 апреля 2016

Заголовок соединения относится к соединению.

Из спецификации HTTP / 1.1,

Поле общего заголовка соединения позволяет отправителю указывать параметры, которые требуются для этого конкретного соединения и НЕ ДОЛЖНЫ передаваться через прокси-сервер при последующих соединениях.

Так что то, что отправляет nginx, не зависит от того, что отправляется из апстрима и должно быть Вот несколько вариантов:

keepalive_requests 0 работает, если вы никогда не хотите, чтобы соединения использовались повторно.

keepalive_disable ua работает для определенного пользовательского агента.

И этот ответ работает ip.

1 голос
/ 25 октября 2011

Посмотрите на fastcgi_finish_request(), если вы используете PHP-FPM или PHP FastCGI:

Эта функция позволяет ускорить реализацию некоторых php запросы. Ускорение возможно при наличии действий в процесс выполнения скрипта, который не влияет на ответ сервера. За Например, сохранение сессии в memcached может произойти после того, как страница был сформирован и передан на веб-сервер. fastcgi_finish_request () является Функция php, которая останавливает вывод ответа. Веб-сервер немедленно начинает передавать ответ «медленно и грустно» клиенту и php в то же время может сделать много полезных вещей в контексте запрос, такой как сохранение сеанса, преобразование загруженного видео, обработка всех видов статистики и т. д.

http://php -fpm.org / вики / Особенности # fastcgi_finish_request.28.29

0 голосов
/ 31 августа 2017

Вы можете исправить NGINX.Например, FastCGI, добавьте

if (strcmp((char *)h->key.data, "Connection") == 0 && strcmp((char *)h->value.data, "close") == 0) {
     ngx_log_debug0(NGX_LOG_DEBUG_HTTP, r->connection->log, 0, "Set Connection: close");
     r->keepalive = 0;
}

в строку src/http/modules/ngx_http_fastcgi_module.c 1977, сразу после парсера заголовка.

0 голосов
/ 25 октября 2011

Отключение keepalive на защищенном сервере может увеличить нагрузку на сервер, проверьте сеанс «Оптимизация HTTPS-сервера» в этом документе. http://nginx.org/en/docs/http/configuring_https_servers.html

Возможно, я хочу установить небольшое значение keepalive_requests и установить keepalive_requestsтакже

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...