wasm_postpone_access
Директива `wasm_postpone_access` откладывает выполнение фильтров WebAssembly на фазе доступа до тех пор, пока тело запроса не станет доступным.
Описание
Директива wasm_postpone_access является частью модуля ngx_wasm, который даёт NGINX возможность запускать код WebAssembly (Wasm) непосредственно в своих фазах обработки. Используя эту директиву, сервер NGINX может оптимизировать обработку запросов, которым требуется доступ к телу HTTP-запроса до применения определённой логики на уровне приложения, определённой в Wasm модуле. Это особенно полезно в сценариях, таких как проверка форматов данных или содержимого, зависящего от тела запроса, когда обычные операции на фазе доступа могут не иметь доступа к этим данным.
При установке wasm_postpone_access NGINX откладывает выполнение настроенных Wasm фильтров до получения тела запроса. Это позволяет более точно контролировать поток запроса, обеспечивая выполнение конкретных проверок доступа или логики модификации только тогда, когда это действительно необходимо. Директиву можно настроить в разных контекстах, включая http, server или location.
Директива принимает один аргумент, обычно логическое значение, указывающее, следует ли применять отложение. Такой простой подход к конфигурированию обеспечивает удобство для администраторов, стремящихся расширить конфигурацию NGINX продвинутыми возможностями Wasm без глубокого погружения в сложные настройки.
Пример конфига
http {
server {
listen 80;
location / {
wasm_postpone_access on;
proxy_wasm my_filter;
proxy_pass http://backend;
}
}
}Убедитесь, что директивы расположены в правильном порядке: wasm_postpone_access должен быть определён до любых директив proxy_wasm в одном и том же контексте.
Использование этой директивы без соответствующего Wasm-фильтра, требующего наличия тела, может привести к излишней сложности.
Не все фильтры могут поддерживать операции, если тело по умолчанию недоступно, что может привести к проблемам во время выполнения.