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 没有检测用户代理,而只提供了缓存页面。

有人能帮我吗?任何建议我都会非常感激。

相关内容