js_fetch_protocols
Директива `js_fetch_protocols` задаёт протоколы, используемые для получения данных в контексте NGINX JavaScript.
Описание
Директива 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-скриптах.