Nginx перенаправляет мобильный трафик на разные страницы при ошибке одного URL

Nginx перенаправляет мобильный трафик на разные страницы при ошибке одного URL

Я пытаюсь перенаправить мобильный трафик с помощью Nginx, но все еще получаю ошибки.

Вот что я надела nginx.conf:

map $geoip_country_code $preferred_upstream {
    default eu;
    US us;
}

map $geoip_country_code $preferred_upstream_mp {
    default eum;
    US usm;
}

upstream us {
    server unix:/path/us.sock;
}

upstream eu {
    server unix:/path/eu.sock;
}

upstream usm {
    server unix:/path/usm.sock;
}

upstream eum {
    server unix:/path/eum.sock;
}

server {
    ....
    location @fallback {
        # add trailing slash if url has no dot in it
        rewrite ^/([^\.]*[^/])$ /$1/ permanent;
        include     uwsgi_params;
        set $mobile_rewrite do_not_perform;

        if ($http_user_agent ~* '(iPhone|iPod|iPad|Android|BlackBerry|webOS|Windows Phone)') {
            set $mobile_rewrite perform;
        }

        if ($mobile_rewrite = do_not_perform) {
            uwsgi_pass $preferred_upstream;
            break;
        }

        if ($mobile_rewrite = perform) {
            uwsgi_pass $preferred_upstream_mp;
            break;
        }

        .......        
    }
    ...
}

Я установил ngx_http_headers_more_filter_moduleи настроил следующее:

more_set_headers -s 200 'Vary: Accept-Encoding, User-Agent';

Работает с самого начала. Но иногда после этого не может отобразить нужную версию на нужном устройстве.

Не знаю почему. Наверное, что-то не так с настройками кэша? Похоже, nginx не определяет user agent, а только предоставляет страницу кэша.

Может ли кто-нибудь мне помочь с этим? Буду очень признателен за любые предложения.

Связанный контент