Как обслуживать две разные сборки из двух разных репозиториев в соответствии с пользовательским агентом

#nginx

Вопрос:

У меня есть два репозитория react и соответствующие сборки в /www/web и /www/mobile

Я пытаюсь обслуживать свои статические файлы на основе пользовательского агента.

По умолчанию статические файлы будут обслуживаться из /www/web каталога, а если это мобильное устройство, то статические файлы будут обслуживаться из /www/mobile

Ниже приведен мой nginx default.conf

 map $sent_http_content_type $expires {
    default off;
    text/html epoch;
    text/css max;
    application/javascript max;
    ~image/ max;
    ~font/ max;
}

map $http_user_agent $ua_device {
    default 'desktop';
    ~*(android|bbd |meego). mobile|avantgo|bada/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile. firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)/|plucker|pocket|psp|series(4|6)0|symbian|treo|up.(browser|link)|vodafone|wap|windows ce|xda|xiino/i 'mobile';
    ~*android|ipad|playbook|silk/i 'tablet';
}

map $ua_device $root_content {
    default '/www/web';
    'mobile' '/www/mobile';
}


server {
    listen 80 default_server;

    server_name _;

    root $root_content;

    index index.html index.htm;
    try_files $uri $uri/ /index.html;
    expires $expires;
}
 

Теперь, с этой конфигурацией, web работает нормально. Но если я проверю на мобильном устройстве, я получаю 500 со следующим сообщением об ошибке.

цикл перезаписи или внутреннего перенаправления при внутреннем перенаправлении на «/index.html «

Я занимаюсь этим уже давно, поэтому любые указатели были бы действительно большой помощью.

Комментарии:

1. Посмотрите, помогает ли это, от serverfault: serverfault.com/a/505099/215387

2. @SaurabhPabhare Похоже, что nginx не может найти index.html файл в вашем корне мобильного приложения ( /www/mobile ). Это приводит к бесконечному циклу попыток /index.html URI.

3. @IvanShatsky Спасибо. Это была проблема. Том в docker-compose не монтировался должным образом.