Добавить контекстный путь для приложения в 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

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

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;
  }

Edit-1

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

location ~ /app(/.*)?$ {
   alias   /usr/share/nginx/html/;
   try_files $uri $uri/ =404;
}
Другие вопросы по тегам