Murmurianez
@Murmurianez
JavaScript Developer

Nginx Как сделать мобильную версию сайта?

Подскажите, пожалуйста, что не так с конфигом?
Пытаюсь сделать мобильную версию сайта с поддоменом "m".
Всё различие в каталогах со статикой: основной сайт - application, мобильный - mobile
Новичок в бэке, так что не судите строго и если есть что ещё поправить - сообщайте)

server {
        listen          80;
        server_name     site.ru www.site.ru;

        if ($http_user_agent ~* (iphone|аndroid|blackberry)){
                rewrite ^/(.*)$ m.site.ru/$1 permanent;
        }

        location / {
                auth_basic              "Enter pass:";
                auth_basic_user_file    /var/www/nginx/passwords;

                root    /var/www/site.ru/html/application;
                index   index.html;
                charset utf-8;

                proxy_pass              http://localhost:1337/;

                proxy_set_header        X-Real-IP               $remote_addr;
                proxy_set_header        X-Forwarded-For         $proxy_add_x_forwarded_for;
                proxy_set_header        Host                    $host;
        }
}


server {
        listen          80;
        server_name     m.site.ru www.m.site.ru;

        location / {
                auth_basic              "Enter pass:";
                auth_basic_user_file    /var/www/nginx/passwords;

                root    /var/www/site.ru/html/mobile;
                index   index.html;
                charset utf-8;

                proxy_pass              http://localhost:1337/;

                proxy_set_header        X-Real-IP               $remote_addr;
                proxy_set_header        X-Forwarded-For         $proxy_add_x_forwarded_for;
                proxy_set_header        Host                    $host;
        }
}


UPD:
Часть заработала - на site.ru и m.site.ru отдаёт разную статику, но автоматически не переключается на мобильную версию сайта + мобильная версия сайта не работает с сервером.

server {
        listen          80;
        server_name     site.ru www.site.ru;

        if ($http_user_agent ~* (iphone|аndroid|blackberry)){
               rewrite ^/(.*)$ http://m.site.ru/$1 permanent;
        }

        location / {
                auth_basic              "Enter pass:";
                auth_basic_user_file    /var/www/nginx/passwords;

                root    /var/www/site.ru/html/application;
                index   index.html;
                charset utf-8;

                proxy_pass              http://localhost:1337/;

                proxy_set_header        X-Real-IP               $remote_addr;
                proxy_set_header        X-Forwarded-For         $proxy_add_x_forwarded_for;
                proxy_set_header        Host                    $host;
        }
}

server {
        listen 80;
        server_name m.site.ru;
        root    /var/www/site.ru/html/mobile;
        index   index.html;
}
  • Вопрос задан
  • 1822 просмотра
Решения вопроса 1
Murmurianez
@Murmurianez Автор вопроса
JavaScript Developer
Вот такое решение у меня получилось в итоге. Нужно чуть причесать, но перенаправление выполняет

server {
        listen          80;
        server_name     site.ru;

        if ($http_user_agent ~* "(iphone|android|blackberry)") {
                rewrite ^ http://m.site.ru redirect;
                break;
        }

        location / {
                root /var/www/site.ru/html/application; #статика
                index index.html;
                charset utf-8;

                proxy_pass http://localhost:1337; #здесь у нас висит Node.js - отправляем все запросы сюда
                proxy_set_header        X-Real-IP               $remote_addr;
                proxy_set_header        X-Forwarded-For         $proxy_add_x_forwarded_for;
                proxy_set_header        Host                    $host;
        }
}

server {
        listen          80;
        server_name m.site.ru;

        location / {
                root    /var/www/site.ru/html/mobile; #статика мобильного сайта
                index   index.html;
                charset utf-8;
        }

        location /api { #перенаправляем все ajax запросы m.site.ru к api
                proxy_pass              http://localhost:1337;
                proxy_set_header        X-Real-IP               $remote_addr;
                proxy_set_header        X-Forwarded-For         $proxy_add_x_forwarded_for;
                proxy_set_header        Host                    $host;
        }
}
Ответ написан
Пригласить эксперта
Ответы на вопрос 3
@criminalist
Ага послушал советчика вроде Вас, теперь делаю третий шаблон потому что адаптивная верстка оказалось очень тяжелой и поисковики отказались ее принимать, но это уже отдельный разговор.
Я понял что нужны отдельные версии мобильная и для пк.
Ответ написан
saintbyte
@saintbyte
Django developer
Бросайте вы эти суб домены и прочие отдельные домены - используйте адаптивную верстку.
Ответ написан
Как вариант: отдавать один html и разные css в зависимости от "мобильности" клиента.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы