Подайте два SPA-приложения на Nginx - PullRequest
0 голосов

Я пытаюсь обслуживать два угловых приложения через nginx в локальном

У меня следующая структура папок:

/html/page1

/html/page2

Внутри каждой папки находятся файлы каждого приложения.

Внутри page1 :

3rdpartylicenses.txt
favicon.ico
index.html
main.14de877820428b623cf2.js
polyfills.f4b78b65941f8063fd57.js
runtime.06daa30a2963fa413676.js
styles.22f686fc418e8e8e0c6e.css

Внутри page2 :

3rdpartylicenses.txt
favicon.ico
index.html
main.275a9dc67ff328ee34fa.js
polyfills.4ea17e55c619d6f4aaad.js
runtime.b57bf819d5bdce77f1c7.js
styles.f7757684f1abbaee3fb9.css

А это мой nginx.confg

worker_processes  1;

error_log  logs/error.log;

events {
    worker_connections  1024;
}


http {
    include       mime.types;
    default_type  application/octet-stream;

    sendfile        on;
    keepalive_timeout  65;

    server {
        listen       80;
        server_name  localhost;


        location /page1{
            alias   html/page1;
            $uri $uri/ $uri/index.html /page1/index.html html/page1/index.html index.html
        }

        location /page2{
            alias   html/page2;
            $uri $uri/ $uri/index.html /page2/index.html html/page2/index.html index.html
        }


        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }

    }

}

когда я пытаюсь получить доступ к http://localhost/page2/ или http://localhost/page2/, я получаю пустую страницу

В консоли я вижу ошибки:

GET http://localhost/styles.f7757684f1abbaee3fb9.css net :: ERR_ABORTED 404 (не найдено) GET http://localhost/runtime.b57bf819d5bdce77f1c7.js net :: ERR_ABORTED 404 (не найдено) GET http://localhost/styles.f7757684f1abbaee3fb9.css net :: ERR_ABORTED 404 (не найдено) GET http://localhost/runtime.b57bf819d5bdce77f1c7.js net :: ERR_ABORTED 404 (не найдено)

Но если я запускаю URL http://localhost/page1/runtime.b57bf819d5bdce77f1c7.js, я получаю файл без проблем.

Я пробовал множество способов для try_files. Я думаю, что проблема заключается в этой линии.

папки /location работают хорошо, если я помещаю статические файлы индекса, они работают нормально.

Есть предложения?

1 Ответ

0 голосов

В файле nginx.conf потребуется следующая конфигурация:

location / { 
      root html; 
      try_files /page1$uri /page2$uri =404; 
}

location /page1{
      alias   html/page1;
      try_files $uri $uri/ $uri/index.html /page1/index.html;
}

location /page1{
      alias   html/page2;
      try_files $uri $uri/ $uri/index.html /page2/index.html;
 }

В дополнение к этим конфигурациям мы должны создать папки с именем page1 и page1 внутри html-каталога nginx.

А также при создании приложения, примените параметр --base-href с именем папки, в которой он будет находиться, следующим образом:

ng build --prod --base-href / page1

ng build --prod --base-href / page2

...