nginx - 在 nginx 位置共享变量
问题描述
是否可以在位置指令之间共享变量?例如)
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
从你的 webapp 中检查 cookie 值,或者从 nginx 配置中的那个 cookie 值中设置你的自定义 HTTP 标头:
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";
推荐阅读
- testing - 如何在用户配置文件模式下正确使用 cassandra-stress 工具?
- sql - 识别已在多行输入数据的列
- react-native - RN TouchableOpacity onPress 不调用函数
- ruby-on-rails - rails 4 Ruby搜索本地属性和外来属性关键字
- powershell - 使用 PowerShell 从 DistiniguishedName 中提取域
- java - 如果属性为空,如何让 MapStruct 不生成包装器对象?
- javascript - JavaScript Date 对象如何知道夏令时?
- spring - 应用程序启动失败
- javascript - 音频 WMA 错误地报告为 video/x-ms-wma
- wordpress - 根据用户位置隐藏 WooCommerce 产品详细信息