Выпуск http-сервера nginx 1.11.0

Представлен первый выпуск новой основной ветки nginx 1.11, в рамках которой будет продолжено развитие новых возможностей (в параллельно поддерживаемой стабильной ветке 1.10 вносятся только изменения, связанные с устранением серьёзных ошибок и уязвимостей).

Основные изменения:

  • В директивы «proxy_bind», «fastcgi_bind», «memcached_bind», «scgi_bind» и «uwsgi_bind» добавлен новый параметр «transparent», который позволяет указать нелокальный IP-адрес для использования в исходящих соединениях. Например, можно указать реальный IP клиента — «proxy_bind $remote_addr transparent». Для работы рабочие процессы nginx должны выполняться с правами root, а в системе нужно специальным образом настроить маршрутизацию для прозрачного проброса;
  • Новая переменная $request_id, в которой содержится уникальный идентификатор запроса;
  • Новая переменная $proxy_protocol_port, содержащая номер клиентского сетевого порта, указанного в заголовке протокола PROXY;
  • В модуле ngx_http_realip_module добавлена переменная $realip_remote_port, содержащая номер сетевого порта клиента, с которого было инициировано соединение;
  • В директиве «map» обеспечена возможность формирования результирующего значения, комбинируя несколько переменных;
  • Добавлена проверка поддержки ядром событий EPOLLRDHUP, и при использовании механизма «epoll» включения соответствующих оптимизаций обработки соединений;
  • Для загрузки сертификатов разных типов (RSA, ECDSA) директивы «ssl_certificate» и «ssl_certificate_key» теперь можно указывать несколько раз;
  • При использовании OpenSSL 1.0.2 и новее через директиву «ssl_ecdh_curve» теперь можно указать список эллиптических кривых;
  • Для использования шифров DHE отныне необходимо указать параметры DHE при помощи директоривы «ssl_dhparam»;
  • В случае запроса виртуального сервера, не указанного в процессе согласования SSL-соединения, nginx теперь возвращает код »421 Misdirected Request», что улучшает совместимость с некоторыми клиентами HTTP/2, использующими клиентские сертификаты;
  • Клиенты HTTP/2 теперь могут сразу отправлять тело запроса, не дожидаясь готовности сервера принять данные. Размер используемого при этом буфера можно установить через директиву «http2_body_preread_size».

© OpenNet