2014-09-30 11 views
20

Sono nuovo a Nginx e spero di ottenere un aiuto.Come estrarre un valore dal cookie in nginx

Voglio estrarre determinati dati (determinati campi impostati dai miei script PHP) dal cookie del browser in nginx in modo che possa registrarlo. Se possibile, voglio farlo semplicemente modificando la configurazione di nginx.

Qualsiasi puntatore/aiuto sarebbe molto apprezzato.

+1

http://nginx.org/en/docs/http/ngx_http_core_module.html#var_cookie_ –

risposta

31

È possibile accedere ai valori dei cookie utilizzando la variabile $cookie_COOKIE_NAME_GOES_HERE.

Vedi Nginx Documentation

+7

Solo per risparmiare tempo: questo metodo funziona solo per i cookie con caratteri alfanumerici e "_". Se hai un cookie chiamato user.id o user [id] (per esempio) devi usare $ http_cookie con la funzione nginx map http://nginx.org/en/docs/http/ngx_http_map_module.html#map – LuisClemente

+1

@ LuisClemente - qualche possibilità di uno snip'it di come lo faresti ?? – Guy

10

Ecco un esempio per estrarre un cookie HttpOnly e passarlo a un RESTful API come un token OAuth Portatore:

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

Se qualcuno sta usando la risposta precedente con diversi biscotti differenti nella risposta regex corretta è:

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

o uso più generale:

Problemi correlati