js_fetch_protocols

Директива `js_fetch_protocols` задаёт протоколы, используемые для получения данных в контексте NGINX JavaScript.

Синтаксисjs_fetch_protocols protocol1 [protocol2 ...];
По умолчаниюnone
Контекстstream, stream server
Аргументы1+

Описание

Директива js_fetch_protocols указывает протоколы, которые NGINX JavaScript (NJS) будет использовать для получения внешних ресурсов. Эта директива особенно актуальна в сценариях, когда скрипты NJS должны извлекать данные, например из API или других веб‑сервисов. Каждый перечисленный протокол разрешён при выполнении операций fetch в среде выполнения NJS и определяет способ взаимодействия клиента (в данном случае NGINX) с вышестоящими серверами или внешними URL.

Директива поддерживает несколько аргументов, позволяя указать один или несколько протоколов. Обычно используемые протоколы включают http, https и ws (WebSocket). Когда скрипт NJS пытается выполнить операцию fetch, он будет учитывать только протоколы, указанные в js_fetch_protocols. Это полезно для управления безопасностью и функциональностью путём ограничения типов соединений, которые могут быть установлены, обеспечивая соответствие политикам безопасности и архитектурным решениям.

Благодаря поддержке нескольких протоколов пользователи могут тонко настроить конфигурацию в соответствии с различными эксплуатационными требованиями. Например, если в настройке используются только защищённые соединения с внешними сервисами, директиву можно ограничить значениями https и wss, тем самым предотвращая использование небезопасных протоколов. Кроме того, сокращение списка помогает уменьшить потенциальные векторы атак, возникающие из‑за ненужного раскрытия протоколов.

Пример конфига

stream {
    server {
        listen 5000;

        js_fetch_protocols https http;
    }
}

Убедитесь, что указанные протоколы поддерживаются backend services, чтобы избежать fetch failures.

Использование неподдерживаемых протоколов может привести к неожиданному поведению или runtime errors в NJS-скриптах.

← Ко всем директивам