Назад | Перейти на главную страницу

Сопоставление шаблона Nginx с частью пути

Вот чего я хотел бы добиться:

  1. Все запросы к /api/... должен быть направлен на обратный прокси
  2. Все запросы к /static/... должен подаваться из /html/static/pub
  3. Все остальные запросы следует обслуживать из /html/app/pub ИЛИ вернуться к /html/app/pub/index.html

Изменение структуры папок /html в настоящее время не вариант.

Вот как сейчас выглядят блоки моего местоположения:

root /html/app/pub/;

location /api/ {
  # proxy details...
}

location ~* /static/(.*) {
  try_files /html/static/pub/$1 =404;
}

location / {
  try_files $uri /index.html;
}

При такой настройке требования (1) и (3) выполняются, а (2) - нет. Любой запрос, сделанный на любой путь в пределах /static возвращается с HTTP 404. В журнале nginx ошибок нет, запрос просто регистрируется как Not Found.

Я пробовал много разных перестановок, каждая из которых нарушала хотя бы одно из требований; это самое близкое к тому, что я ищу. Я просмотрел все статьи, которые мог найти в Google (90% из которых используют буквально одни и те же фрагменты примеров), но не смог найти решения этой проблемы.

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

Решено:

location ~* /static/(.*) {
  root /html/static/pub/;
  try_files /$1 =404;
}