如何在nginx中从cookie中提取一些值

如何在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

我是Nginx的新手,希望能得到一些帮助

我想从nginx中的浏览器cookie中提取某些数据(由我的PHP脚本设置的某些字段),以便记录它。如果可能的话,我想通过修改nginx配置来实现这一点


非常感谢任何指针/帮助。

您可以使用
$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时才起作用。