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

时间:2014-09-30 19:17:12

标签: nginx

我是Nginx的新手并希望得到一些帮助。

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

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

3 个答案:

答案 0 :(得分:38)

您可以使用$cookie_COOKIE_NAME_GOES_HERE变量访问Cookie值。

请参阅Nginx Documentation

答案 1 :(得分:14)

这是一个提取HttpOnly cookie并将其作为OAuth Bearer令牌传递给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/;
    }

  }

}

答案 2 :(得分:8)

如果有人在回复中使用前面的答案和几个不同的cookie,那么正确的正则表达式是:

flatMap

或更多一般用法:

map $http_cookie $auth_header {
    default "";
    "~*OAuth.AccessToken=(?<token>[^;]+)" "Bearer $token";
  }