$server_protocol

Переменная $server_protocol содержит протокол, используемый для текущего запроса, обычно HTTP или HTTPS. — NGINX Core (HTTP)

$server_protocol NGINX Core (HTTP)

Описание

Переменная $server_protocol в NGINX динамически устанавливается во время обработки запроса и возвращает версию протокола, которую клиент использовал для подключения к серверу. Эта переменная особенно полезна для логирования, условных конфигураций и обработки ответов, поскольку она позволяет различать разные версии протокола, такие как HTTP/1.0, HTTP/1.1 или HTTP/2.0. Обычно переменная устанавливается на фазе запроса сервера и становится доступной в различных контекстах, включая http, server и location-блоки. Когда запрос поступает на NGINX-сервер, модуль анализирует сведения о входящем запросе и соответственно заполняет переменную $server_protocol. Типичными значениями являются строки, такие как "HTTP/1.1", "HTTP/2" и т.д., но переменная отражает точный протокол, согласованный в процессе установления соединения с клиентом. Понимание переменной $server_protocol важно для разработчиков и системных администраторов, так как она может служить основой для политик безопасности или переключателей функциональности. Например, вы можете захотеть разрешать или запрещать доступ в зависимости от того, было ли соединение установлено по HTTPS или HTTP. Логирование протокола также может дать ценные сведения для анализа производительности и безопасности.

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

server {
    listen 80;
    server_name example.com;

    location / {
        add_header X-Protocol $server_protocol;
    }
}

Подсистема

http

Кэшируется

Да

Контексты

http, server, location, if

Убедитесь, что переменная используется в правильном контексте, где она доступна (http, server, location).

Не путайте $server_protocol с похожими переменными, например $http_protocol: она содержит информацию о версии HTTP, которая в некоторых ситуациях может отличаться.