Re: Как вытащить нужные данные из user-agent?
    igroykt 
    nginx-forum на forum.nginx.org
       
    Пн Янв 25 11:57:08 UTC 2016
    
    
  
igroykt Wrote:
-------------------------------------------------------
> Ясно. Ну деваться уже некуда. Вроде решил вложенными if-ами.
> В итоге получилась следующая бяка:
> Если в строке есть android но нет намека на kindlefire...
>                         if ($http_user_agent ~* "(android)") {
>                                 set $android A;
>                         }
>                         if ($http_user_agent !~*
> "(kftt|kfot|kfjwa|kfjwi|kfsowi|kfthwa|kfthwi|kfapwa|kfapwi|kfaswi|kftb
> wi|kfmewi|kffowi|kfsawa|kfsawi|kfarwi)") {
>                                 set $android "${android}B";
>                         }
>                         if ($android = AB) {
>                                 set $android_rewrite perform;
>                         }
> 
> Ну и наоборот
>                         if ($http_user_agent ~* "(android)") {
>                                 set $amazon A;
>                         }
>                         if ($http_user_agent ~*
> "(kftt|kfot|kfjwa|kfjwi|kfsowi|kfthwa|kfthwi|kfapwa|kfapwi|kfaswi|kftb
> wi|kfmewi|kffowi|kfsawa|kfsawi|kfarwi)") {
>                                 set $amazon "${amazon}B";
>                         }
>                         if ($amazon = AB) {
>                                 set $amazon_rewrite perform;
>                         }
> Вообще наверное лучше искомые слова для kindlefire вынести в
> переменную чтобы в нескольких местах не подправлять если выйдут новые
> девайсы.
Как бы теперь запихнуть эти kftt и т.д. в одну переменную? чтобы получилось
if ($http_user_agent ~* $kindle)
Мап не сработал:
map $host $kindlefire {
        default
kftt|kfot|kfjwa|kfjwi|kfsowi|kfthwa|kfthwi|kfapwa|kfapwi|kfaswi|kftbwi|kfmewi|kffowi|kfsawa|kfsawi|kfarwi;
}
и сет тоже не проканал:
set $kindlefire
kftt|kfot|kfjwa|kfjwi|kfsowi|kfthwa|kfthwi|kfapwa|kfapwi|kfaswi|kftbwi|kfmewi|kffowi|kfsawa|kfsawi|kfarwi;
if ($http_user_agent ~* "($kindlefire)") {
   set $amazon "${amazon}B";
}
Posted at Nginx Forum: https://forum.nginx.org/read.php?21,264075,264099#msg-264099
    
    
Подробная информация о списке рассылки nginx-ru