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