web-dev-qa-db-fra.com

Comment extraire de la valeur d'un cookie dans nginx

Je suis nouveau chez Nginx et j'espère obtenir de l'aide.

Je souhaite extraire certaines données (certains champs définis par mes PHP) du cookie du navigateur dans nginx afin de pouvoir les enregistrer. Si possible, je veux le faire simplement en modifiant la configuration de nginx.

Tout pointeur/aide serait grandement apprécié.

30
kee

Vous pouvez accéder aux valeurs des cookies en utilisant le $cookie_COOKIE_NAME_GOES_HERE variable.

Voir Documentation Nginx

41
Dayo

Voici un exemple pour extraire un cookie HttpOnly et le transmettre à une API RESTful en tant que jeton porteur OAuth:

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/;
    }

  }

}
15

Si quelqu'un utilise la réponse précédente avec plusieurs cookies différents dans la réponse, l'expression correcte est:

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

ou usage plus général:

map $http_cookie $auth_header {
    default "";
    "~*yourCookieName=(?<variable>[^;]+)" "the value you wanna set $variable";
  }
10
andresbravog