proxy_wasm
Директива `proxy_wasm` интегрирует модули WebAssembly в конвейер обработки запросов NGINX.
Описание
Директива proxy_wasm позволяет разработчикам указать модуль WebAssembly (WASM), который будет выполняться в рамках стадий обработки HTTP-запроса и ответа в NGINX. Эта интеграция становится возможной благодаря Proxy-Wasm ABI, который стандартизирует взаимодействие WASM-фильтров с базовой серверной архитектурой NGINX. С помощью реализации WASM-модулей пользователи могут расширять возможности NGINX, добавляя собственную логику обработки — такую как аутентификация, логирование или модификация запроса — эффективно, без необходимости изменять ядро кодовой базы NGINX.
Директива proxy_wasm может принимать один или два аргумента. Первый аргумент — имя выполняемого WASM-модуля, а второй аргумент, который является необязательным, может быть использован для указания фазы выполнения, в которой модуль должен быть вызван. Если фаза не указана, используется фаза default. Такая конструкция обеспечивает гибкость и позволяет разработчикам настраивать обработку запросов в соответствии с потребностями конкретного приложения. Жизненный цикл WASM-модуля строго контролируется NGINX, гарантируя, что модули загружаются один раз для каждого worker process, что оптимизирует использование ресурсов.
Кроме того, использование этой директивы в сочетании с другими конфигурациями, такими как wasm_call, может повысить модульность и повторное использование компонентов WebAssembly в конфигурациях NGINX.
Пример конфига
http {
server {
listen 9000;
location / {
proxy_wasm my_custom_filter;
proxy_pass http://upstream;
}
}
}Убедитесь, что указанный путь к модулю WASM правильно задан и доступен процессам NGINX.
Проверьте совместимость модуля WASM с используемой версией NGINX.
Убедитесь, что фазы, в которых работает модуль WASM, соответствуют задуманной логике обработки.