2014-09-30 15 views
20

Jestem nowy w Nginx i mam nadzieję uzyskać pomoc.Jak wyodrębnić wartość z cookie w nginxie

Chcę wyodrębnić określone dane (niektóre pola ustawione przez moje skrypty PHP) z pliku cookie przeglądarki w Nginx, aby móc go zarejestrować. Jeśli to możliwe, chcę to zrobić, modyfikując konfigurację nginx.

Każdy wskaźnik/pomoc byłaby bardzo doceniana.

+1

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

Odpowiedz

31

Możesz uzyskać dostęp do wartości plików cookie za pomocą zmiennej $cookie_COOKIE_NAME_GOES_HERE.

Zobacz Nginx Documentation

+7

Tylko dla ratowania czyjś czas: ta metoda działa tylko w przypadku plików cookie ze znakami alfanumerycznymi i "_". Jeśli masz plik cookie o nazwie user.id lub user [id] (na przykład), musisz użyć funkcji http_cookie z funkcją mapy nginx http://nginx.org/en/docs/http/ngx_http_map_module.html#map – LuisClemente

+1

@ LuisClemente - jakakolwiek szansa na snip'it, jak byś to zrobił? – Guy

10

Oto przykład, aby wyodrębnić HttpOnly ciasteczka i przekazać je do relaksującego API jako tokenu OAuth połączenia:

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

Jeśli ktoś korzysta z poprzednią odpowiedź z kilku różnych ciasteczek w odpowiedzi na właściwy regex:

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

lub bardziej ogólne zastosowanie:

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