The OpenNET Project / Index page

[ новости /+++ | форум | wiki | теги | ]

Релиз новой стабильной ветки http-сервера Apache 2.4

20.02.2012 14:06

Доступен релиз http-сервера Apache 2.4.1, первый выпуск новой стабильной ветки 2.4.x, последние годы развиваемой в рамках экспериментальной ветки 2.3.x (прошлая стабильная ветка Apache 2.2 вышла в 2005 году, а первая альфа-версия 2.3.0 была представлена в 2008 году). В составе ветки 2.4.x развивались новые возможности, которые невозможно было интегрировать в стабильную ветку 2.2.x в силу большого размера вносимого кода, необходимости значительной переработки подсистем или из-за нарушения совместимости.

Несмотря на то, что в ветке 2.4 заметно расширен API, он остаётся обратно совместимым с API Apache 2.2. Написанные для Apache 2.2.x модули потребуют перекомпиляции, но будут работать в Apache 2.4 без изменений кода или потребуют минимальных изменений. В отличие от прошлых выпусков, из состава пакета с исходными текстами Apache 2.4 исключены компоненты Apache Portable Runtime (APR) и APR-Util, которые теперь распространяются отдельно и имеют свою нумерацию версий. Для сборки Apache 2.4 следует установить APR 1.4.x и APR-Util 1.4.x.

Ключевые новшества:

  • Несколько MPM могут быть одновременно собраны в виде динамически загружаемых модулей, которые можно активировать в конфигурации без последующей пересборки;
  • С модуля Event MPM снят гриф экспериментальной разработки. Event MPM основан на коде модуля Worker и реализует гибридную модель обработки соединений, сочетающую многопоточность с пулом ожидающих соединения процессов;
  • Возможность определения через оператор "If" блоков конфигурации, привязанных к отдельным запросам (Per-request configuration). Например, можно использовать If "$req{Host} = ''", внутри выражения можно ссылаться на HTTP-заголовки запроса ($req), заголовки ответа ($resp) и переменные окружения ($env);
  • Реализована поддержка асинхронных операций чтения и записи;
  • Возможность определения через директиву LogLevel разных форматов ведения лога для отдельных модулей и директорий;
  • Возможность указания значения параметра KeepAliveTimeout в миллисекундах;
  • Новые модули:
    • mod_lua - позволяет интегрировать в httpd интерпретатор языка Lua;
    • mod_proxy_fcgi - модуль с поддержкой проксирования протокола FastCGI (поддержка схемы "fcgi:" в директиве "ProxyPass");
    • mod_proxy_scgi - модуль с поддержкой проксирования протокола SCGI (поддержка схемы "scgi:" в директиве "ProxyPass");
    • mod_ratelimit - позволяет организовать ограничение пропускной способности клиентов (например, суммарно для всех можно ограничить общую пропускную способность только для страницы загрузки файлов);
    • mod_remoteip - заменяет значение IP-клиента на содержимое из определенного HTTP-заголовка (например, X-Client-IP или X-Forwarded-For). Обычно модуль используется при работе apache в роли бэкенда;
    • mod_reflector - позволяет возвращать клиенту тело запроса, применив к нему определенный фильтр;
    • mod_reqtimeout - позволяет установить таймаут и минимальную интенсивность потока данных при обработке входящих запросов (например, "RequestReadTimeout body=10,MinRate=1000" ограничивает время загрузки тела запроса 10 секундами, плюс прибавляет по 1 секунде на каждые 1000 байт полученных данных);
    • mod_request - позволяет определить фильтр для обработки и распространения тела запроса;
    • mod_slotmem_shm - система доступа к разделяемой памяти на основе слотов (scoreboard);
    • mod_allowmethods - позволяет ограничить некоторые HTTP-методы не мешая авторизации и аутентификации (например, "AllowMethods GET HEAD OPTIONS");
    • mod_buffer - позволяет организовать буферизацию для входящих и исходящих фильтров.
  • Измененные модули:
    • В mod_ssl добавлена поддержка проверки статуса клиентского сертификата на OCSP серверах. Также добавлена возможность совместного использования данных SSL сессии на нескольких http-серверах, через задействование memcached;
    • В mod_cache добавлена поддержка кэширования HEAD-запросов. Директивы mod_cache теперь можно указывать в привязке к отдельным директориям, а не только для отдельного сервера. Добавлена возможность выводить устаревшие данные из кэша в случае недоступности рабочего бэкенда. В заголовок X-Cache можно подставлять значения HIT/MISS/REVALIDATE;
    • В mod_include в элемент 'include' добавлена поддержка атрибута 'onerror', позволяющего вывести свой документ при ошибке вместо вывода используемого по умолчанию текста ошибки (например, include virtual="/not-exist.html" onerror="/error.html");
    • В mod_proxy значительно увеличена производительность работы директивы ProxyPass в блоках Location и LocationMatch, что значительно быстрее, чем использование традиционного синтаксиса "ProxyPass путь URL";
    • В mod_proxy_balancer расширено число параметров BalancerMembers, которые можно менять через balancer-manager. Добавлена возможность добавления новых параметров BalancerMembers через balancer-manager. Поддержка изменения во время исполнения подмножества параметров директивы Balancer;
    • В модулях mod_cgi, mod_include, mod_isapi и т.п. преобразование заголовков в переменные окружения осуществляется по более строгим правилам, например, блокируются попытки осуществления XSS-атак через подстановку скриптов в заголовки. Все заголовки в которых используются специальные символы теперь молча удаляются. Для проброса некорректных с точки зрения новых правил переменных окружения в устаревшие скрипты предусмотрено несколько обходных путей;
    • В модуле mod_authz_core расширенная логика авторизации может быть задана при помощи Require и связанных директив, таких как RequireAll;
  • Дополнительные компоненты:
    • В поставку Apache включен скрипт fcgistarter, предназначенный для запуска серверных FastCGI процессов.
    • В утилиту htcacheclean - добавлены функции просмотра и удаления отдельных прокэшированных URL и связанных с ними мета-данных;
  • Средства для разработчиков модулей:
    • Интерфейс для кэширования небольших объектов, основанный на ранее созданном для mod_ssl кэше сессионных данных. В качестве хранилища можно использовать цикличный буфер в разделяемой памяти, dbm-базу на диске и memcached;
    • Добавлен парсер выражений общего назначения, API которого основан на ap_expr.h. Код парсера основан на ранее реализованном парсере для mod_include;
    • Добавлен hook check_config для проверки конфигурации на ранней стадии загрузки, позволяя независимо проанализировать параметры определенных директив и при необходимости откорректировать их;
    • Для оценки статуса mod_cache добавлен hook cache_status, вызываемый после принятия решения о кэшировании. Реализация по умолчанию добавляет при ответе опциональные заголовки X-Cache в X-Cache-Detail.


  1. Главная ссылка к новости (http://www.apache.org/dist/htt...)
  2. OpenNews: Вышел Apache 2.2.0. Обзор новшеств.
Лицензия: CC-BY
Тип: Интересно / Программы
Ключевые слова: apache, httpd
При перепечатке указание ссылки на opennet.ru обязательно
Обсуждение (42) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.1, arcade (ok), 14:31, 20/02/2012 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Апачему Event MPM на KQueue и EPoll но не на GCD?
     
     
  • 2.3, XPEH (?), 15:06, 20/02/2012 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Проблемы яблок индейцев не интересуют :)
     
     
  • 3.35, arcade (ok), 12:07, 21/02/2012 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Не знаю что там с индейцами и яблоками а MPM для GCD уже есть. http://libdispatch.macosforge.org/trac/wiki/apache

    Лицензия, кстати, Apache License. В данный момент уже поддерживается в FreeBSD и MacOS и есть реализация для пингвинов с солярой.

     
  • 2.5, Аноним2 (?), 15:25, 20/02/2012 [^] [^^] [^^^] [ответить]  
  • +/
    Потому что KQueue > GCD ?
     
     
  • 3.7, Аноним (-), 15:28, 20/02/2012 [^] [^^] [^^^] [ответить]  
  • +/
    > Потому что KQueue > GCD ?

    Скорее потому что kqueue способ уведомления о событиях, а GCD способ запуска новых потоков, с чем неплохо справляется и более низкоуровневый pthread.

     
     
  • 4.36, arcade (ok), 12:13, 21/02/2012 [^] [^^] [^^^] [ответить]  
  • +/
    >> Потому что KQueue > GCD ?
    > Скорее потому что kqueue способ уведомления о событиях, а GCD способ запуска
    > новых потоков, с чем неплохо справляется и более низкоуровневый pthread.

    Не совсем так, GCD это целый комбайн, изначально он работает с волокнами но позволяет запускать несколько потоков для их обработки.

    pthread по сравнению с ним кстати та ещё монстрятина.

     
  • 2.6, Аноним (-), 15:25, 20/02/2012 [^] [^^] [^^^] [ответить]  
  • +/
    А разве GCD работает вне Objective C runtime?
     
     
  • 3.26, Andrew Kolchoogin (?), 20:43, 20/02/2012 [^] [^^] [^^^] [ответить]  
  • +/
    FYI: devel/libdispatch. GCD for FreeBSD. :)
     

  • 1.2, фклфт (ok), 15:06, 20/02/2012 [ответить] [﹢﹢﹢] [ · · · ]  
  • +2 +/
    Ну вроде не плохо
    особенно порадовало mod_ratelimit
     
  • 1.4, RedRat (ok), 15:16, 20/02/2012 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Рад, что Индеец жив, здоров и растёт большим. Но я на днях последний сервер под Апачем на nginx перевёл. А после включения в php-fpm опции ondemand всё стало совсем шоколадно.
     
     
  • 2.9, Аноним (-), 15:47, 20/02/2012 [^] [^^] [^^^] [ответить]  
  • +/
    Я думал индеец это чероки...
     
     
  • 3.10, Andrey Mitrofanov (?), 15:51, 20/02/2012 [^] [^^] [^^^] [ответить]  
  • –2 +/
    Глупый, indian же.
     
  • 3.17, Аноним (-), 17:27, 20/02/2012 [^] [^^] [^^^] [ответить]  
  • +/
    > Я думал индеец это чероки...

    А я думал что апачи и чероки - разные племена индейцев. Может, историю и географию хоть немного изучать надо? А то вон какой позор на публике получается :)

     
     
  • 4.22, Аноним (-), 17:33, 20/02/2012 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > А я думал что апачи и чероки - разные племена индейцев. Может,
    > историю и географию хоть немного изучать надо? А то вон какой
    > позор на публике получается :)

    А еще есть куча людей, которые путают индейцев, индийцев и индусов.

     
     
  • 5.37, Аноним (-), 12:57, 21/02/2012 [^] [^^] [^^^] [ответить]  
  • +/
    >> А я думал что апачи и чероки - разные племена индейцев. Может,
    >> историю и географию хоть немного изучать надо? А то вон какой
    >> позор на публике получается :)
    >индийцев и индусов.

    в чем разница?


     
     
  • 6.41, Аноним (-), 18:03, 21/02/2012 [^] [^^] [^^^] [ответить]  
  • +/
    > в чем разница?

    Примерно как между русскими и православными.

     
  • 2.11, sphere (?), 15:59, 20/02/2012 [^] [^^] [^^^] [ответить]  
  • +2 +/
    > сервер под Апачем на nginx перевёл. А после включения в php-fpm

    всё дело в том, что apache - это несколько больше чем php

     
     
  • 3.12, RedRat (ok), 16:14, 20/02/2012 [^] [^^] [^^^] [ответить]  
  • +/
    > всё дело в том, что apache - это несколько больше чем php

    А с этим никто и не спорит. Просто в конкретно моём случе оказалось, что на шести разных серверах под разными проектами связка nginx+php-fpm+third-part-modules покрывает все потребности. И там, где раньше сервер упирался в максимальное количество запущенных процессов апача, сейчас он ни во что не упирается.

    Ещё раз напомню, речь не о том, что nginx > apache, а о том, что нынче бОльшая часть функций апача (но не все, разумеется) легко реализуется на nginx с меньшим потреблением ресурсов системы.

     
     
  • 4.27, myhand (ok), 21:21, 20/02/2012 [^] [^^] [^^^] [ответить]  
  • –3 +/
    > А с этим никто и не спорит. Просто в конкретно моём случе оказалось, что на шести разных серверах под разными проектами связка nginx+php-fpm+third-part-modules покрывает все потребности. И там, где раньше сервер упирался в максимальное количество запущенных процессов апача, сейчас он ни во что не упирается.

    И раньше и теперь - сервер явно "упирается" в некомпетентного системного администратора.  Судя по описанию "проблемы" - в вашем случае было достаточно просто поставить перед апачем легкий прокси, хоть тот же апач с другим MPM (event, woker).

    > нынче бОльшая часть функций апача (но не все, разумеется) легко реализуется на nginx

    "Большая", потому что вы готовы посчитать и сравнить числа - или потому что просто вам кажется что больше?

     
     
  • 5.29, arisu (ok), 21:26, 20/02/2012 [^] [^^] [^^^] [ответить]  
  • +/
    >  Судя по описанию «проблемы» — в вашем случае было достаточно
    > просто поставить перед апачем легкий прокси, хоть тот же апач с
    > другим MPM (event, woker).

    внизапна! после установки этого «прокси» апач вообще оказался не нужен.

     
     
  • 6.30, myhand (ok), 22:40, 20/02/2012 [^] [^^] [^^^] [ответить]  
  • –1 +/
    В данном случае - да.  Правда, проделана куча ненужной, в общем-то, работы.
     
  • 5.34, RedRat (ok), 12:00, 21/02/2012 [^] [^^] [^^^] [ответить]  
  • +2 +/
    > И раньше и теперь - сервер явно "упирается" в некомпетентного системного администратора.

    О, господи, ещё один "диагност по фотографии"... Ничего не знает ни о задаче, ни о параметрах системы - но обязательно вылезет со своим "авторитетным" мнением.

    > Судя по описанию "проблемы" - в вашем случае было достаточно просто поставить перед апачем легкий прокси, хоть тот же апач с другим MPM (event, woker).

    Понятно. Простая мысль "а зачем ставить Апач, если его можно НЕ ставить" головы "компетентных" горе-теоретиков редко посещает. Как и другая мысль, что количество возможных решений больше одного, им известного.

     
     
  • 6.38, myhand (ok), 12:59, 21/02/2012 [^] [^^] [^^^] [ответить]  
  • –4 +/
    >> И раньше и теперь - сервер явно "упирается" в некомпетентного системного администратора.
    > О, господи, ещё один "диагност по фотографии"... Ничего не знает ни о задаче, ни о параметрах системы

    Понимающему вы сообщили достаточно.  Если считаете, что "диагност" ошибся - опишите проблему детальнее.

    > Простая мысль "а зачем ставить Апач, если его можно НЕ ставить" головы "компетентных" горе-теоретиков редко посещает.

    Головы компетентных без кавычек - посещает, поверьте.  Естественно, если действительно можно не ставить, что достаточно нетипично для бакенда.  

    > количество возможных решений больше одного, им известного

    И это известно.  Более того, вам показали как можно было решить "проблему" не переделывая фактически все.

     
  • 3.18, Аноним (-), 17:28, 20/02/2012 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > всё дело в том, что apache - это несколько больше чем php

    Особенно хорошо это заметно когда он форкает 100500 процессов где и похапэ и апач и память заканчивается :)


     
     
  • 4.21, MVK (??), 17:33, 20/02/2012 [^] [^^] [^^^] [ответить]  
  • +/
    > Особенно хорошо это заметно когда он форкает 100500 процессов где и похапэ
    > и апач и память заканчивается :)

    - неужели не слышали что кроме prefork есть другие MPM? Даже в статье написано - worker, процессов будет 2-3, а расход ресурсов существенно упадет


     
     
  • 5.24, Аноним (-), 18:32, 20/02/2012 [^] [^^] [^^^] [ответить]  
  • +/
    >- неужели не слышали что кроме prefork есть другие MPM? Даже в статье написано - worker, процессов будет 2-3, а расход ресурсов существенно упадет

    В apache столько всего что его нужно изучать чтобы пользоваться им эффективно - мало просто понатыкать опции чтобы как-то завелось (если у вас наблюдаются признаки синдрома виндузятника - то вам сначала надо пройти курс терапии чтобы приниматься за осноение этого мощного, гибкого и очень быстрого комбайна).

    По новости нужно отдать должное майнтайнерам за грамотное решение (с заботой о пользователях): "Несмотря на то, что в ветке 2.4 заметно расширен API, он остаётся обратно совместимым с API Apache 2.2. Написанные для Apache 2.2.x модули потребуют перекомпиляции, но будут работать в Apache 2.4 без изменений кода или потребуют минимальных изменений."

     
  • 5.42, angra (ok), 21:19, 21/02/2012 [^] [^^] [^^^] [ответить]  
  • +/
    Когда я последний раз интересовался mod_php, оно все еще падало под всем кроме prefork. А без mod_php апач таки действительно не нужен.
     
     
  • 6.45, AlexAT (ok), 07:54, 22/02/2012 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > Когда я последний раз интересовался mod_php, оно все еще падало под всем
    > кроме prefork. А без mod_php апач таки действительно не нужен.

    Это хорошо объяснено в мануале PHP. Дело не в самом mod_php или PHP, дело в том, что не все собираемые PHP воедино библиотеки thread-safe. Поэтому использовать PHP с тредами можно разве что для экспериментов.

     
  • 4.44, AlexAT (ok), 07:53, 22/02/2012 [^] [^^] [^^^] [ответить]  
  • +/
    Просто не юзайте винду, в нормальных ОС есть разделение памяти процессами до момента записи в оную.
     
     
  • 5.47, arisu (ok), 13:51, 22/02/2012 [^] [^^] [^^^] [ответить]  
  • +/
    > Просто не юзайте винду, в нормальных ОС есть разделение памяти процессами до
    > момента записи в оную.

    вообще-то в винде тоже есть. те же DLL она пречудесно расшаривает между процессами, если есть возможность.

    друге дело, что CreateProcess() реализован несколько… через соседский анус. в принципе, при использовании Native API и некоторых недокументированых структур возможно сделать «почти настоящий» fork(), даже с некоторым расшариванием памяти. но это геморрой, да к тому же структуры меняются чуть ли не с каждым сервиспаком.

     

  • 1.8, mikevmk (??), 15:37, 20/02/2012 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    mod_lua хехе. это очень жорошо, что свободные проекты свободно обмениваются идеями
     
  • 1.14, Аноним (-), 16:47, 20/02/2012 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    поддержка асинхронных операций чтения и записи - давно этого ждали...
     
  • 1.25, o (?), 20:00, 20/02/2012 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    event mpm потестим, а то он все падал..
     
     
  • 2.28, myhand (ok), 21:22, 20/02/2012 [^] [^^] [^^^] [ответить]  
  • +/
    > event mpm потестим, а то он все падал..

    Интересно.  А в каких условиях "падал"?  Вы часом, с mod_php его не используете?

     

  • 1.31, Аноним (-), 23:53, 20/02/2012 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    На самом деле, что в апаче, что в nginx жутко не хватает встроенного, из коробки, mod_wsgi.

    fast_cgi - зло, а альтернативы на продакшн нет. Собсно, это заставляет встраивать в свои проекты

    Складывается впечатление, что авторам современных сделать поддержку нормального WSGI просто в жуткое западло.

     
     
  • 2.32, Аноним (-), 00:28, 21/02/2012 [^] [^^] [^^^] [ответить]  
  • +/
    > fast_cgi - зло

    Чем?

     
  • 2.33, Eugene Prokopiev (?), 08:37, 21/02/2012 [^] [^^] [^^^] [ответить]  
  • +/
    > На самом деле, что в апаче, что в nginx жутко не хватает
    > встроенного, из коробки, mod_wsgi.

    а это разве не из коробки - http://wiki.nginx.org/HttpUwsgiModule?

     
     
  • 3.39, KOL (ok), 13:32, 21/02/2012 [^] [^^] [^^^] [ответить]  
  • +/
    Мануалы не предназначены для настоящих джедаев.

    >This module first appeared in nginx-0.8.40

     
  • 2.40, Аноним (-), 18:01, 21/02/2012 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Есть же FastCGI, зачем вам WCGI?
     

  • 1.43, XoRe (ok), 22:20, 21/02/2012 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    mod_fastcgi ?
    И даже дружит с fpm?
     
     
  • 2.46, Vladimir (??), 12:25, 22/02/2012 [^] [^^] [^^^] [ответить]  
  • +/
    Дружит, причем давно. У меня apache в роли "выполнялки .htaccess" прекрасно работает в связке nginx + apache 2.2(mod_fastcgi) + php-fpm
     
     
  • 3.48, XoRe (ok), 00:55, 24/02/2012 [^] [^^] [^^^] [ответить]  
  • +/
    > Дружит, причем давно. У меня apache в роли "выполнялки .htaccess" прекрасно работает
    > в связке nginx + apache 2.2(mod_fastcgi) + php-fpm

    Мы говорим об одном fastcgi?
    Я про тот, который демонизируется и слушает порт.

    .htacess + fastcgi - я так понимаю, работает все, кроме php_value/flag ?

     

     Добавить комментарий
    Имя:
    E-Mail:
    Текст:



    Спонсоры:
    Слёрм
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2020 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру