Рейтинг:0

Настройка контекстного пути в nginx

флаг cn

Я пытаюсь обслуживать приложение и файлы, связанные с веб-пакетом, из контекстного пути. Файл конфигурации Nginx выглядит следующим образом:

nginx.conf

сервер {

  слушать 80;
  корень /usr/share/nginx/html;
  индекс index.html index.htm;

  место расположения / {
    try_files $uri $uri/ /mfeexample/index.html;
  }

  местоположение /mfeexample/ {   
    try_files $uri $uri/ /mfeexample/index.html;
  }
}

Докерфайл

# Среда сборки
ОТ узла: 14.2.0-alpine как сборка

# Рабочий каталог
РАБОЧИЙКАТАЛОГ /приложение

#Копирование файлов пакета узла в рабочий каталог
КОПИРОВАТЬ пакет.* .

#Установка зависимости приложения
ЗАПУСК npm install --silent

#Скопировать весь код
КОПИРОВАТЬ . .

#RUN Производственная сборка
ЗАПУСК npm запустить сборку

# производственная среда
ОТ nginx: стабильный-альпийский

# Развернуть созданное приложение на сервере Nginx
# /usr/share/nginx/html — это статический каталог Nginx, используемый для обслуживания приложения
КОПИРОВАТЬ --from=build /app/build /usr/share/nginx/html/mfeexample

# Удалите конфигурацию Nginx по умолчанию в контейнере Nginx.
ЗАПУСК rm /etc/nginx/conf.d/default.conf

# Применяем новый файл конфигурации
скопируйте nginx/nginx.conf /etc/nginx/conf.d/default.conf

# Выставляем приложение на порт 80
ЭКСПОЗИЦИЯ 80

# Запустить сервер Nginx
CMD ["nginx", "-g", "демон выключен;"]

Теперь, глядя на вкладку сети в браузере, я обнаружил, что все файлы обслуживаются по адресу http://localhost:3000/mfeexample/, это именно то, что я хотел. Однако, когда я пробую вложенный маршрут, он ломается, вложенный маршрут я имею в виду http://localhost:3000/mfeexample/customer/, снова смотрю на вкладку сети, nginx ищет файлы в http://localhost:3000/mfeexample/ customer/index.html, но я хочу, чтобы nginx всегда находил файлы с http://localhost:3000/mfeexample.

PS: Пожалуйста, имейте в виду, что я новичок в nginx, и я использовал метод проб и ошибок, чтобы добраться до этого момента.

Заранее спасибо.

флаг us
Не могли бы вы попытаться пояснить свой вопрос наглядными примерами: «Когда я запрашиваю URL-адрес A, я хочу получить файл B из файловой системы». «Когда я запрашиваю URL-адрес C, я хочу получить файл D из файловой системы». Немного сложно понять, что вам нужно из вашего вопроса. Также уточните, что вы подразумеваете под контекстным путем.
Sampreeth Amith Kumar avatar
флаг cn
Контекстный путь Я имею в виду URL-адрес, по которому должно обслуживаться приложение. В моем случае я хочу, чтобы приложение обслуживалось в /mfeexample, а не на корневом уровне. Все файлы также должны обслуживаться из /mfeexample.
флаг us
Пожалуйста, добавьте точные примеры, как я просил выше.Без ясных примеров на этот вопрос нельзя ответить.
Sampreeth Amith Kumar avatar
флаг cn
Чтобы привести пример, когда я нажимаю URL-адрес http://localhost:3000/, приложение реакции не должно отображаться, но когда я нажимаю URL-адрес http://localhost:3000/mfeexample/, приложение должно отображать его содержимое, а также обслуживать все статические файлы с http://localhost/mfeexample. Теперь, если я попытаюсь использовать вложенный маршрут, т.е. http://localhost:3000/mfeexample/customer/, одно и то же реагирующее приложение должно обслуживать все статические файлы с http://localhost:3000/mfeexample/, но должно отображать содержимое в http:// локальный: 3000/mfeexample/клиент/ Надеюсь, это поможет.
Sampreeth Amith Kumar avatar
флаг cn
Приложение должно возвращать main.js из приложения React, которое должно находиться по адресу http://localhost:3000/mfeexample. Пользователь должен иметь возможность посетить либо http://localhost:3000/mfeexample, либо http://localhost:3000/mfeexample/customer, однако текущая проблема заключается в том, что при переходе на http://localhost:3000/mfeexample/customer сервер пытается обслуживать main.js с http://localhost:3000/mfeexample/customer вместо базового пути http://localhost:3000/mfeexample
флаг us
Извините, но ваш пример по-прежнему не показывает, какой путь к файловой системе должен обслуживать каждый URL-адрес. Пожалуйста, отредактируйте вопрос и добавьте туда сопоставление URL-пути.

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

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