Представлен (http://mailman.nginx.org/pipermail/nginx-announce/2016/00017...) первый выпуск новой основной ветки nginx 1.11 (http://nginx.org), в рамках которой будет продолжено развитие новых возможностей (в параллельно поддерживаемой стабильной ветке 1.10 (https://www.opennet.me/opennews/art.shtml?num=42082) вносятся только изменения, связанные с устранением серьёзных ошибок и уязвимостей).
Основные изменения (http://nginx.org/en/CHANGES):
- В директивы "proxy_bind", "fastcgi_bind", "memcached_bind", "scgi_bind" и "uwsgi_bind" добавлен новый параметр "transparent", который позволяет указать нелокальный IP-адрес для использования в исходящих соединениях. Например, можно указать реальный IP клиента - "proxy_bind $remote_addr transparent". Для работы рабочие процессы nginx должны выполняться с правами root, а в системе нужно специальным образом настроить маршрутизацию для прозрачного проброса;- Новая переменная $request_id (http://nginx.org/en/docs/http/ngx_http_core_module.html#var_...), в которой содержится уникальный идентификатор запроса;
- Новая переменная $proxy_protocol_port (http://nginx.org/en/docs/http/ngx_http_core_module.html#var_...), содержащая номер клиентского сетевого порта, указанного в заголовке протокола PROXY;- В модуле ngx_http_realip_module добавлена переменная $realip_remote_port (http://nginx.org/en/docs/http/ngx_http_realip_module.html#va...), содержащая номер сетевого порта клиента, с которого было инициировано соединение;
- В директиве "map (http://nginx.org/en/docs/http/ngx_http_map_module.html#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".
URL: http://mailman.nginx.org/pipermail/nginx-announce/2016/00017...
Новость: http://www.opennet.me/opennews/art.shtml?num=44483
По поводу transparent. Тоесть теперь возможно прокидывать запросы с нгингса на демоны которые не понимают realip и при этом эти демоны будут видеть реальные айпи?
Да
Отлично!
да-то да, но есть ньюанс - они и ответят на этот реальный ip, со всеми вытекающими в виде необходимости лезть в файрвол на тему socket divert или как у вас оно называется.
В таком случае было бы не плохо если бы это на простом примере показали в мане. Но нет, тратьте время, разбирайтесь сами.
В гугле забанили? https://www.kernel.org/doc/Documentation/networking/tproxy.txt
Спасибо, но линуксом не пользуемся.
epoll() - пример корявого дизайна API.
В Linux так все, кроме разгрузки ЦПУ и возможностей сети/виртуализации.
Вот и пользуйся вантузом, BSD-шник ты наш.
Во фре kqueue() и в венде I/O completion ports сделаны удобно, как минимум к одному дескриптору для чтения и для записи можно приатачить разные указатели на данные.Более того, в венде фактически отдельный указатель на нужные обработчику данные можно/нужно прикреплять к каждому отдельному запросу в/в.
> Во фре kqueue() и в венде I/O completion ports сделаны удобно, как
> минимум к одному дескриптору для чтения и для записи можно приатачить
> разные указатели на данные.dup(2) и вперёд.
Очень масштабируемо.
Нет zero-copy
что? какой ещё zero-copy тут?
Не удобно манаджить.
> epoll() - пример корявого дизайна APIВерно. Единственный некорявый дизайн - в виндовс (WaitForMultipleObjects)
Какое оно имеет отношение к http-серверу?
Исторически сложившаяся маленькая ложь
Зачастили как-то релизы nginx-а...
> Зачастили как-то релизы nginx-а...однако :D
Развиваются люди!
Поделитесь пожалуйста конфигом ipfw/pf/natd/ipdivert/setfib/etc для работы nginx 1.11.0 и proxy_bind $remote_addr transparent; под FreeBSD. Демон на который проксируем находится на локальном айпи на том же сервере где и nginx, но не умеет RealIP, по этому нужно как-то прозрачно прокинуть.
Разобрались. Если кому интересно, то:ipfw add fwd localhost ip from АйпиДемона ПортДемона to any via ИсходящийИнтерфейс