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