$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 版本信息,在某些情况下可能不同。