$https

$https 变量指示请求是否通过 HTTPS(安全)发出。 — NGINX Core (HTTP)

$https NGINX Core (HTTP)

说明

$https 变量是 NGINX 的一个内置变量,用于判断当前请求是否通过 HTTPS 处理。当请求通过安全连接处理时,$https 被设置为 'on'。如果请求不安全(即通过 HTTP 提供),该变量返回 'off'。该变量在将 HTTP 流量重定向到 HTTPS 或根据连接的安全性配置条件响应时特别有用。 $https 变量的值通常在 NGINX 配置了正确的 SSL 证书并监听 HTTPS 端口时被设置。例如,如果某个 NGINX server 块指定了 SSL 证书并监听端口 443,则该块的传入请求中 $https 将被设置为 'on'。相反,如果没有 SSL 配置且服务器监听端口 80,则该变量将为 'off'。需要注意的是,该变量只有 'on' 或 'off' 两种取值。

配置示例

server {
    listen 443 ssl;
    server_name example.com;
    ssl_certificate /path/to/cert.pem;
    ssl_certificate_key /path/to/key.pem;

    location / {
        if ($https = off) {
            return 301 https://$host$request_uri;
        }
        # Handle the secure request
    }
}

子系统

http

可缓存

上下文

http, server, location, if

确保 SSL 已正确配置;否则 $https 将无法按预期工作。

如果 NGINX 位于执行 SSL 终止的 proxy 之后,该变量可能不可靠;请使用适当的 headers 来检查原始连接方案。