Перейти к содержанию

ndk: Nginx Development Kit

Установка на Debian/Ubuntu

Эти документы относятся к пакету APT nginx-module-ndk, предоставляемому репозиторием GetPageSpeed Extras.

  1. Настройте APT-репозиторий, как описано в настройке APT-репозитория.
  2. Установите модуль:
sudo apt-get update
sudo apt-get install nginx-module-ndk
Показать дистрибутивы и архитектуры
| Дистрибутив | Версия            | Компонент   | Архитектуры     |
|-------------|-------------------|-------------|------------------|
| debian      | bookworm          | main        | amd64, arm64     |
| debian      | bookworm-mainline | main        | amd64, arm64     |
| debian      | trixie            | main        | amd64, arm64     |
| debian      | trixie-mainline   | main        | amd64, arm64     |
| ubuntu      | focal             | main        | amd64, arm64     |
| ubuntu      | focal-mainline    | main        | amd64, arm64     |
| ubuntu      | jammy             | main        | amd64, arm64     |
| ubuntu      | jammy-mainline    | main        | amd64, arm64     |
| ubuntu      | noble             | main        | amd64, arm64     |
| ubuntu      | noble-mainline    | main        | amd64, arm64     |

Nginx Development Kit (NDK)

Аннотация

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

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

Разработчики модулей Nginx, желающие использовать какие-либо функции в NDK, должны указать, что NDK является зависимостью их модуля, и что пользователям также потребуется скомпилировать его, когда они компилируют свои собственные модули. Им также нужно будет объявить в своих модулях, какие функции NDK они хотят использовать (объясняется ниже).

Если вы не являетесь разработчиком модуля Nginx, то единственная полезная часть этого проекта будет раздел «использование для пользователей» ниже.

Статус

NDK теперь считается стабильным. Он уже используется в довольно большом количестве сторонних модулей (см. список ниже).

Функции

  • дополнительные функции conf_set для регулярных выражений, сложных/скриптовых значений, путей...
  • макросы для упрощения задач, например, проверки на NULL при выполнении ngx_array_push
  • патчи к основному исходному коду
  • включен универсальный внешний обработчик библиотеки ngx_auto_lib_core (см. отдельное README)

Дизайн

модульный

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

авто-генерируемый и легко расширяемый

Многие из макросов, доступных в NDK, автоматически генерируются из простых конфигурационных файлов. Это делает создание аналогичных макросов для вашего собственного кода очень простым - это обычно просто добавление дополнительной строки в конфигурационный файл и повторный запуск сценария сборки.

Использование для пользователей

Если другой модуль Nginx, который вы хотите использовать, указывает, что NDK является зависимостью, вам необходимо сделать следующее :

  1. скачать исходный код (https://github.com/simpl/ngx_devel_kit)
  2. распаковать исходный код (tar -xzf $name)
  3. скомпилировать Nginx с помощью следующего дополнительного параметра --add-module=/path/to/ngx_devel_kit.

например:

./configure --add-module=/path/to/ngx_devel_kit \
            --add-module=/path/to/another/module

Использование для разработчиков

Чтобы использовать NDK в вашем собственном модуле, вам нужно добавить следующее:

  1. добавьте эту строку в ваш модуль
#include    <ndk.h>

Примечание: поскольку NDK включает следующие строки

#include    <ngx_config.h>
#include    <ngx_core.h>
#include    <ngx_http.h>

вы можете заменить их на один включенный файл выше. 2. добавьте следующую строку в конфигурационный файл вашего модуля:

have=NDK_[module_name]  . auto/have

для каждого модуля NDK, который вы хотите использовать (вам нужно включить auto/have несколько раз, если вы хотите использовать несколько модулей NDK).

Примечание: старый метод установки

CFLAGS="$CFLAGS -DNDK_[module_name]"

в настоящее время устарел. Он все еще будет работать, но приведет к появлению ненужных строк при компиляции Nginx.

Предупреждение: Использование NDK_ALL

Вы также можете установить NDK_ALL, чтобы включить все модули NDK. Это делается в основном для удобства на ранних этапах разработки другого модуля. Однако,

НЕ ОСТАВЛЯЙТЕ NDK_ALL В ВАШЕМ КОНФИГУРАТИВНОМ ФАЙЛЕ ПРИ ПУБЛИКАЦИИ

Хотя NDK в настоящее время довольно мал, со временем он может стать большим репозиторием кода, что, если использовать NDK_ALL, приведет к компиляции гораздо большего объема кода, чем необходимо.

Модули, использующие NDK

Следующие сторонние модули используют NDK.

Если вы хотите добавить свой модуль в этот список, пожалуйста, дайте нам знать.

Особая благодарность

Особая благодарность Yichun Zhang за помощь в поддержке этого модуля.