Как я могу создать динамический корневой путь в конфигурации NGINX?

Во время развертывания я создаю артефакты, которые представляют собой папки со статическими файлами - html, css, js. И они копируются на сервер в папке /usr/share/nginx/html/${SHORT_COMMIT_HASH}.

. Сайт, например, доступен по ссылке.

site.com/${SHORT_COMMIT_HASH} 

Запросы выглядят так:

site.com/9f9b348b/some_url_1/1
site.com/9f9b348b/some_url_2/2

I нужно, чтобы при вводе любой ссылки, начинающейся site.com/${SHORT_COMMIT_HASH}, отображался index.html из каталога / usr / share / nginx / html / $ {SHORT_COMMIT_HASH}

У меня есть конфигурация nginx для этого:

server {
    listen       80;
    server_name  localhost;

    location / {
      root /usr/share/nginx/html;
    }

    location ~ ^/([a-zA-Z0-9]*)/ {
      root /usr/share/nginx/html;
      try_files $uri $uri/ /$1/index.html;
    }
}

Но у меня проблема. css, js файлы nginx пытается найти не в site.com/${SHORT_COMMIT_HASH}, а в корне site.com/

Как я могу изменить корень для местоположения / где для каждого запроса, это будет собственный корень, относительный $ {SHORT_COMMIT_HASH};

Как я могу сделать это с помощью переменных:

location / {
  root /usr/share/nginx/html/${SHORT_COMMIT_HASH};
} 
0
задан 9 April 2019 в 10:26
1 ответ

Я нахожу решение с помощью sub_filter:

server {
    listen       80;
    server_name  localhost;

    location / {
     root /usr/share/nginx/html;
     try_files $uri $uri/ /$1/index.html;

     location ~ "^/([a-z0-9]{8})/" {
        try_files $uri /$1/index.html = 404;
        sub_filter_once off;
        # sub_filter_types text/html; # mime-type based rewriter
        sub_filter '/static' '/$1/static';
  }
    }

    location ~ ^/([a-zA-Z0-9]*)/ {
      root /usr/share/nginx/html;
      try_files $uri $uri/ /$1/index.html;
    }
}
0
ответ дан 5 December 2019 в 03:33

Теги

Похожие вопросы