Добавить контекстный путь для приложения на nginx

Nginx передает весь статический контент из корневого каталога в корневой URL-адрес. Например, если расположение корневого содержимого настроено как /usr/share/nginx/html, которое содержит файл /usr/share/nginx/html/foo.html, то URL-адрес http://localhost/foo.html будет обслуживать этот HTML-файл. Я хочу префикс контекстного пути в URL-адресе, чтобы http://localhost/myapp/foo.html обслуживал файл /usr/share/nginx/html/foo.html.

Я попытался изменить местоположение и добавить псевдоним, но это дает 404.

  location / {
    root   /usr/share/nginx/html;
    index  index.html index.htm;
  }

  location /myapp/ {
    alias   /usr/share/nginx/html/;
  }

Я также хочу, чтобы http://localhost/myapp обслуживал /usr/share/nginx/html/index.html

Я использую образ докера 1.12.1-alpine nginx.


person ares    schedule 31.08.2017    source источник


Ответы (1)


Попробуй это

  index  index.html index.htm;
  location / {
    root   /usr/share/nginx/html;
  }

  location /myapp/ {
    alias   /usr/share/nginx/html/;
  }

Если это не сработает, попробуйте ниже

  index  index.html index.htm;
  location / {
    root   /usr/share/nginx/html;
  }

  location /myapp/ {
    alias   /usr/share/nginx/html/;
    try_files $uri $uri/ =404;
  }

Редактировать-1

Если вы хотите, чтобы он работал без трейлинга /, вам следует использовать ниже

location ~ /app(/.*)?$ {
   alias   /usr/share/nginx/html/;
   try_files $uri $uri/ =404;
}
person Tarun Lalwani    schedule 31.08.2017
comment
Спасибо за ваш ответ - я пытаюсь использовать косую черту в конце, как я написал в вопросе. - person ares; 31.08.2017
comment
Конфиг 100% правильный. Я протестировал его локально. Я предполагаю, что у вас есть другая конфигурация по умолчанию, которая также лежит в вашей конфигурации nginx, что может быть проблемой. Добавьте вывод find . -name "*.conf" в папку, где находится ваша папка nginx.conf. - person Tarun Lalwani; 31.08.2017
comment
Это сработало после некоторых попыток. Единственное, что корневой URL-адрес без завершающей косой черты (http://localhost/myapp) возвращает 404, где http://localhost/myapp/ возвращает index.html - person ares; 01.09.2017
comment
Не могли бы вы объяснить, почему конфигурация ОП возвращала 404? не могу понять в чем проблема - person Elouan Keryell-Even; 15.01.2020
comment
Я думаю, что index index.html не был снаружи, поэтому. - person Tarun Lalwani; 15.01.2020