Рейтинг:0

Как правильно использовать содержимое файла с виртуальным путем с помощью Nginx?

флаг in

У меня есть приложение AngularJs (v1), созданное как образ Docker (с Nginx в качестве веб-сервера). Он имеет структуру ниже

-приложение
  --строить
    --js
      |-app.min.js
      |-логин.min.js
    --стили
      |-приложение.min.css
      |-логин.min.css
  --ресурсы
    --картинки
    --шрифты
  --index.html
  --логин.html

у меня есть следующее конфиг нгинкс

сервер {
  слушать 80;
  журнал_ошибок /var/log/nginx/error.log;
  журнал_доступа /var/log/nginx/access.log;

  корень /usr/share/nginx/html;

  местоположение / содержание {
    переписать ^/content$/index.html;
  }

  местоположение/контент/логин {
    переписать ^/content/login$/login.html;
  }

}

Это index.html файл

<html lang="en" data-ng-app="app">
  <header>
    <script src="build/js/app.min.js"></script>
    <link rel="stylesheet" href="build/styles/app.min.css">
  </header>
  <body>
    ...
  </body>
</html>

и логин.html файл


<html lang="en" data-ng-app="app-login">
  <header>
    <script src="build/js/login.min.js"></script>
    <link rel="stylesheet" href="build/styles/login.min.css">
  </header>
  <body>
    ...
  </body>
</html>

Чего я хочу достичь

Когда пользователи переходят на http://локальный:3000/контент приложение будет служить index.html и логин.html если пользователи посещают http://локальный:3000/контент/логин.

Оба /содержание и /контент/логин маршруты, которых нет в приложении Angularjs.

Что я получил

При доступе http://локальный:3000/контент/логин приложение загрузило 2 следующих файла

  • http://localhost:3000/content/build/js/login.min.js
  • http://localhost:3000/content/build/styles/login.min.css

Оба они получили код ошибки 404.

Чего я ожидал

Я хочу, чтобы Nginx напрямую обслуживал файл http://localhost:3000/content/build/js/login.min.js с содержимым файла из http://localhost:3000/build/js/login.min.js. Это также относится к файлам CSS.

jb_alvarado avatar
флаг tc
Когда вы запустите `http://localhost:3000/`, вы не заденете nginx, потому что nginx прослушивает порт 80.
Tan Viet avatar
флаг in
@jb_alvarado А, я использую docker-compose для прослушивания порта 80 из nginx, а затем экспортирую его на порт 3000 на моем хост-компьютере.

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.