nGinx, несколько мест, обслуживающих разные SPA - PullRequest
0 голосов
/ 24 августа 2018

У меня очень простая конфигурация, которую я хочу использовать для обслуживания нескольких одностраничных приложений

server {
    root /var/www/;
    index index.html;

    location ~ ^/spa1/(.*?)$ {
        root /var/www/spa1/;
    }

    location ~ ^/spa2/(.*?)$ {
        root /var/www/spa2/;
    }

    error_page 404 /404.html;
}

Структура каталогов /var/www/ выглядит следующим образом:

www/
|- 404.html        (Generic 404)
|- index.html      (A plain html page with links to the apps)
|- spa1/   
   |- index.html   (the index page for single page app 1)
   |- spa1.js
   |- spa1.css
   |- static/      (folder containing spa1 static files)
|- spa2/
   |- index.html   (the index page for single page app 2)
   |- spa2.js
   |- spa2.css
   |- static/      (folder containing spa1 static files)

Myбыло понимание, что при просмотре myserver.com/ будет возвращена страница index.html в /var/www, тогда как при посещении myserver.com/spa1/ или myserver.com/spa2/ будут возвращены соответствующие index.html страницы для каждого отдельного приложения.Однако, похоже, что это не так - вместо этого, если я захожу на /spa1 или /spa2, я получаю только корневую страницу index.html, как если бы она игнорировала директиву root для каждого приложения

Как дополнение, есть ли более правильный способ обслуживания нескольких одностраничных приложений, чем способ, которым я пытаюсь это сделать?

1 Ответ

0 голосов
/ 24 августа 2018

Я не понимаю, почему URI /spa1/ возвращает файл /var/www/index.html с вашей текущей конфигурацией.Однако ...

Значение оператора root должно быть /var/www для всех трех случаев.Путь к файлу рассчитывается путем объединения значения оператора root с URI.

Таким образом, ваша структура каталогов и план URI должны работать с еще более простой конфигурацией:

server {
    root /var/www;
    index index.html;

    error_page 404 /404.html;
}

Подробнее см. в этом документе .

...