Adicionando cabeçalho baseado em cookies

2

Eu quero adicionar um cabeçalho de solicitação indicando se uma solicitação parece vir de um cliente de desktop ou de um cliente móvel.

Eu tentei adicionar isso em um bloco de servidor

if ($http_user_agent ~* 'mobile|phone') && ($http_user_agent !~* 'ipad') {
  proxy_set_header       X-Device-Category "mobile";
} else {
  proxy_set_header       X-Device-Category "desktop";
}

Mas nginx -t responde "if" directive is not allowed here

Eu posso entender de várias postagens que if não funciona da maneira que você imagina no Nginx, mas não tenho certeza sobre outras maneiras de abordar isso.

Mover essa lógica simples para o aplicativo não é uma opção aqui, porque o Nginx precisará disso como chave de cache.

    
por Niels B. 30.03.2016 / 21:28

1 resposta

5

Você pode fazer isso por meio da diretiva do mapa, em vez de se.

map $http_user_agent $device_category {
    default "desktop";
    "~*ipad" "desktop";
    "~*mobile|phone" "mobile";
}

Em seguida, no seu bloco de localização:

proxy_set_header X-Device-Category $device_category;
    
por 30.03.2016 / 21:48

Tags