在 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";
是否可以在位置指令之间共享一个变量? 例如)
location / {
set $myvar "XXX";
.
.
.
}
然后在位置 /app1
中访问 $myvarlocation /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";