Nginx и Angular Маршрутизация (не удается найти. js файлы) - PullRequest
0 голосов
/ 28 апреля 2020

Мы столкнулись с проблемой правильного отображения страниц для Angular маршрутов, обслуживаемых с использованием Nginx. В нашем Angular проекте наш базовый href - "/ панель инструментов". У проекта есть два разных маршрута, указывающих на «/ dashboard / data-analysis» и «/ dashboard / data-visual».

Вот мой базовый c nginx .conf файл:

server{
      listen 80;
      server_name localhost;

      location /dashboard/ {
          alias C:/Users/C123/Desktop/html/dashboard;
          index index.html;
          try_files $url $url/ /dashboard/index.html;
      }
}

Когда я go на «localhost / dashboard /» или «localhost / dashboard / data-analysis» ", любая страница загрузит индекс. html из" C: / Users / C123 / Desktop / html / dashboard / ", но затем не сможет загрузить" polyfill. js "" runtime. js " "стиль. js" и др. c. как определено в теге <script> индекса. html.

Более того Nginx пытается загрузить эти файлы из "C: / Users / C123 / nginx / nginx -1.16.1 / html /" вместо моего псевдонима (C: / Users / C123 / Рабочий стол / HTML / панель).

Есть ли способ, которым я могу определить в блоке местоположения "dashboard /", где он будет читать все из индекса. html моего псевдонима? Я не хочу определять root снаружи или дополнительный блок местоположения только для файлов ". js".

1 Ответ

0 голосов
/ 28 апреля 2020

Вам не хватает директивы root.

Также try_files следует попытаться загрузить указанный файл или index.html в каталоге.

Не проверено, но должно работать:

server {
  listen 80;
  server_name localhost;

  location /dashboard/ {
      root C:/Users/C123/Desktop/html;
      try_files $uri $uri/index.html =404;
  }
}

Редактировать:

Если вы пытаетесь получить доступ к файлам в каталоге dashboard без указания слова dashboard в своем запросе, вы можно добавить блок для этого в качестве запасного варианта.

server {
  listen 80;
  server_name localhost;

  # this will serve requests like http://localhost/runtime.js
  location / {
      root C:/Users/C123/Desktop/html/dashboard;
      try_files $uri $uri/index.html =404;
  }
  # this will serve requests like http://localhost/dashboard/
  location /dashboard/ {
      root C:/Users/C123/Desktop/html;
      try_files $uri $uri/index.html =404;
  }
}

Имейте в виду, что при NGINX выборе контекста местоположения потребуется Самое длинное совпадение из упомянутых префиксов.

...