如何在nginx中从cookie中提取一些值
我是Nginx的新手,希望能得到一些帮助 我想从nginx中的浏览器cookie中提取某些数据(由我的PHP脚本设置的某些字段),以便记录它。如果可能的话,我想通过修改nginx配置来实现这一点如何在nginx中从cookie中提取一些值,nginx,Nginx,我是Nginx的新手,希望能得到一些帮助 我想从nginx中的浏览器cookie中提取某些数据(由我的PHP脚本设置的某些字段),以便记录它。如果可能的话,我想通过修改nginx配置来实现这一点 非常感谢任何指针/帮助。您可以使用$cookie\u cookie\u NAME\u GOES\u HERE变量访问cookie值 请参见以下示例,提取HttpOnly cookie并将其作为OAuth承载令牌传递给RESTful api: http { map $http_cookie $aut
非常感谢任何指针/帮助。您可以使用
$cookie\u cookie\u NAME\u GOES\u HERE
变量访问cookie值
请参见以下示例,提取HttpOnly cookie并将其作为OAuth承载令牌传递给RESTful api:
http {
map $http_cookie $auth_header {
default "";
"~*OAuth.AccessToken=(?<token>.+)" "Bearer $token";
}
server {
listen 443 ssl;
ssl_certificate /etc/nginx/certs/nginx.crt;
ssl_certificate_key /etc/nginx/certs/nginx.key;
proxy_set_header Authorization $auth_header;
location / {
proxy_pass https://rest-api-host.domain.com/;
}
}
}
http{
映射$http\u cookie$auth\u头{
默认为“;
“~*OAuth.AccessToken=(?。+)”“不记名$token”;
}
服务器{
听443ssl;
ssl_certificate/etc/nginx/certs/nginx.crt;
ssl\u certificate\u key/etc/nginx/certs/nginx.key;
代理设置头授权$auth\u头;
地点/{
代理通行证https://rest-api-host.domain.com/;
}
}
}
如果有人在响应中使用了前面的答案和几个不同的cookie,则正确的正则表达式是:
map $http_cookie $auth_header {
default "";
"~*OAuth.AccessToken=(?<token>[^;]+)" "Bearer $token";
}
map$http\u cookie$auth\u头{
默认为“;
“~*OAuth.AccessToken=(?[^;]+)”“承载者$token”;
}
或更一般的用法:
map $http_cookie $auth_header {
default "";
"~*yourCookieName=(?<variable>[^;]+)" "the value you wanna set $variable";
}
map$http\u cookie$auth\u头{
默认为“;
“~*yourCookieName=(?[^;]+)”“要设置的值$variable”;
}
只是为了节省某人的时间:此方法仅适用于带有字母数字字符和“\u1”的Cookie。如果您有一个名为user.id或user[id]的cookie(例如),您必须将$http_cookie与nginx map函数@LuisClemente一起使用-是否有可能剪断您将如何执行此操作?对于使用此答案的任何人,请注意andresbravog答案中的[^;]
。这很重要,因为这个答案中的正则表达式只有在OAuth.AccessToken是最后/唯一的cookie时才起作用。