Рейтинг:0

Nginx настроить перезапись местоположения для всех подпапок

флаг cn

Этот вопрос во многом вытекает из Предыдущая Я спросил - и в итоге сам себе ответил. Краткое изложение проблемы, которую я там описываю, и моего решения.

  • Мне нужно выполнять разные действия по умолчанию при попытке доступа к файлам в подпапке в зависимости от того, кто пытается получить доступ

аа

  1. Веб-приложение «бэк-офиса», в котором файл доставляется, если он существует, или создается «заглушка», которая возвращается обратно, если она не существует.
  2. В ответ на запросы от телефонного приложения, OTH, я хочу доставить файл, если он существует, или HTTP 404, если он не существует.

Решение, которое я разработал, выглядит следующим образом

  • Создайте символическую ссылку на указанную папку ln -s /путь/к/папке /путь/к/bo_folder где префикс бо_ по симлинку означает бэк-офис
  • При извлечении файлов из приложения просто попробуйте связаться с ними напрямую, как /путь/к/папке/имя_файла.расширение в этом случае Nginx будет иметь дело с отправкой 404 или файла, как он сочтет правильным.
  • При извлечении файлов для редактирования в пакете бэк-офиса обращайтесь к ним как /path/to/bo_folder/file.name.extn

Следующий блок конфигурации Nginx

расположение /путь/к/bo_folder
{
 add_header Access-Control-Allow-Origin *;
 переписать ^(.*)$ /path/to/folder/index.php?$1 последним;
}

Проблема, для которой я сейчас пытаюсь найти более изящное решение, заключается в следующем: у меня есть не одна такая папка, а целая их последовательность. /путь/к/папке_1, /путь/к/папке_2... /путь/к/папке_n

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

Здесь есть небольшая сложность - я не могу справиться с этим, переписав /путь/к/index.php папка, так как содержимое заглушки, которое мне нужно отправить обратно, сильно отличается в зависимости от подпапки, в которой должно находиться это содержимое.

Мои довольно поверхностные знания о конфигурации Nginx подводят меня здесь. Как это может быть сделано?

djdomi avatar
флаг za
почему бы просто не использовать поддомены?
флаг cn
Не могли бы вы уточнить? Я не уверен, что понимаю, что вы имеете в виду
djdomi avatar
флаг za
мой вопрос в том, должен ли это быть определенный путь или его можно заменить поддоменами?
флаг cn
Ах да, теперь я понимаю, что вы имеете в виду. Субдомен подойдет так же, например. backoffice.example.com. Мне нужно было бы получить новый сертификат Let's Ecrypt, но это нормально. Однако мне до сих пор не ясно, как я должен писать блоки конфигурации nginx, чтобы попытки получить файлы, скажем, из `backoffice.example.com/folder/subfolder`, перенаправлялись в `backoffice.example.com/folder/subfolder /index.php` **БЕЗ** написания отдельных блоков конфигурации для каждой папки.
djdomi avatar
флаг za
ну, пожалуйста, обновите свой вопрос, он все еще неконкретный - может быть, с точным примером - и напомните, никогда не пишите здесь такую ​​​​информацию, обновите вопрос, отредактировав его.

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

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