Nginx: проблема с обслуживанием статических ресурсов (js, css и т. Д.) В нескольких местах

#nginx #nginx-config #nginx-location

#nginx #nginx-config #nginx-местоположение

Вопрос:

Для демонстрации у меня есть очень простая настройка приложения. Он состоит из двух проектов, app01 и app02, Обе папки находятся в папке apps

 apps
├── app01
│   ├── index.html
│   ├── style.css
│   └── subpage
│       └── index.html
└── app02
    ├── index.html
    └── style.css
 

Фактический псевдоним работает. Когда я иду my-apps.local:3460 , я вижу Welcome to App 01 , и когда я иду my-apps.local:3460/blog , я вижу Welcome to App 02 (Blog)
Однако CSS (или любой другой статический файл) не загружается в моем /blog местоположении.

В моем файле Nginx conf для этого проекта я также настроил очень простой:

 listen      *:3460;
server_name example.com;

location ~* ^/blog2 {
  alias /Users/username/test/apps/app2/;
  try_files $uri index.html =404;
  index index.html;
}

location /blog1 {
  alias /Users/username/test/apps/app1/;
  try_files $uri index.html =404;
  index index.html;
}
 

Ответ №1:

 location /blog1 {
  alias /example.com/apps/app01;
}  

location /blog2 {
  alias /example.com/apps/app02;
} 
 

apps/app01/index.html

Ваши HTML-файлы должны использовать относительные ссылки для всех URI. Абсолютные URI будут указывать на корень вашего сервера, что позволит обойти перехват «/blog1»

https://example.com/blog1/

 <link rel="stylesheet" href="style.css">

Welcome to 01
 

apps/app01/subpage/index.html

Для подстраниц продолжайте использовать относительные ссылки, но определите относительный корневой путь с <base> помощью тега.

https://example.com/blog1/subpage/

 <base href="/blog1/"> 
<link rel="stylesheet" href="style.css">

Welcome to subpage 01
 

В качестве альтернативы вы можете опустить <base> и сохранить ../ расположение родительских папок, которые становятся громоздкими при перемещении файлов.

 <link rel="stylesheet" href="../style.css">