$scheme
NGINX 中的 $scheme 变量返回当前请求的协议(HTTP 或 HTTPS)。 — NGINX Core (HTTP)
$scheme
NGINX Core (HTTP)
说明
$scheme 变量在确定客户端用来向服务器发起请求的协议时至关重要。它会检查与 NGINX 服务器的连接是否使用了 HTTPS 或 HTTP。当请求通过 HTTPS 发起时,$scheme 变量将返回 'https';而对于 HTTP 请求,则返回 'http'。该变量通常在 NGINX 核心处理请求时设置,其值由服务器上是否存在有效的 SSL 证书决定。因此,如果配置了 SSL 且请求是安全的,变量会被设置为 'https',否则默认值为 'http'。 还应注意,脚本、重定向或其他配置选项常常使用该变量来在响应输出或 HTTP headers 中生成正确的 URL。例如,在重定向用户或动态构建链接时,使用 $scheme 变量可确保链接根据用户访问服务器的方式引用相应的协议。因此,在同时存在安全和非安全访问的环境中,它起着关键作用。
配置示例
server {
listen 80;
server_name example.com;
location / {
return 301 $scheme://www.example.com$request_uri;
}
}子系统
http可缓存
是上下文
http, server, location, if⚠
确保 SSL 已正确配置;否则,它将始终返回 'http'.
⚠
避免在可能未定义 $scheme 的上下文中使用它,例如在某些不处理请求的指令内部。
⚠
如果不正确处理,过度使用 $scheme 可能导致安全问题,例如将内部端点暴露在 HTTP 上。