在 nginx 位置共享变量

Share variable in nginx locations

是否可以在位置指令之间共享一个变量? 例如)

location / {
    set $myvar "XXX";
.
.
.
}

然后在位置 /app1

中访问 $myvar
location /app1 {
    proxy_set_header $X-MY-HEADER $myvar; #currently this line not working
.
.
.
}

您可以将访问令牌放入 cookie 中,以便用户浏览器将其与每个后续请求一起发送:

location / {
    ...
    add_header Set-Cookie "access-token=$upstream_http_x_auth_request_access_token; Path=/app1";
}

然后您可以从您的网络应用程序检查 access-tokes cookie 值,或者从 nginx 配置中的该 cookie 值设置您的自定义 HTTP header:

location /app1 {
    proxy_set_header X-My-Header $cookie_access_token;
    ...
}

请注意,此示例中的 access-token cookie 没有指定 Max-Age 值,因此它只会在最终用户关闭浏览器之前一直存在。如果你愿意,你也可以指定cookie的过期时间,比如24小时:

add_header Set-Cookie "access-token=$upstream_http_x_auth_request_access_token; Path=/app1; Max-Age=86400";