Рейтинг:0

Обслуживание автоиндекса nginx по другому пути

флаг il

Я столкнулся с проблемой, что я хотел бы включить автоиндекс nginx для некоторых каталогов, но у них также есть свои собственные индексные файлы.
Поэтому мне было интересно, есть ли способ заставить nginx обслуживать страницу автоиндексирования по другому пути. Что-то вроде /путь/к/каталогу/autoindex.html

Я пробовал следующее:

    расположение ~* ^/путь/к/каталогу/autoindex.html$ {
        включен автоиндекс;
        автоиндекс_формат HTML; 

        try_files /путь/к/каталогу/ =404;
    }

Но это странно просто перенаправляет меня на /путь/к/каталогу/ и показывает мне мою индексную страницу по умолчанию.

Кроме того, я хотел бы сохранить это для папок, у которых нет страницы индекса, чтобы путь для автоиндекса всегда был постоянным.

флаг us
Пожалуйста, приведите конкретный пример запроса и что именно он должен обслуживать. Трудно понять, какой URL вы хотите запросить и какой автоиндекс пути файловой системы вы хотите получить.
флаг il
@TeroKilkanen `http://example.com/path/to/dir/autoindex.html` должен серверировать автоматический индекс `$webroot/path/to/dir`
Рейтинг:0
флаг il

Я нашел довольно приличное решение, которое просто умело использует редиректы и их порядок:

сервер {
    # директивы прослушивания и т.д...

    корень /путь/к/веб/корневой/каталог;

    # Автоиндекс отображается только тогда, когда nginx не может создать свои собственные индексные файлы.
    индекс ххх;

    переписать ^(?<path>.*)/autoindex\.html$ $path/ last;
    переписать ^(?<путь>.*)/$ $path/index.html последним;

    включен автоиндекс;

    # остальная часть конфигурации сервера...
}

Единственным недостатком этого является то, что вы не можете использовать несколько разных индексных файлов, показатель директива обычно поддерживает. try_files также может испортить это, так как вам нужно убедиться, что для <путь>/ URI nginx не может найти файлы, поэтому показывает autoindex.

Не рекомендовал бы это ни для чего, кроме сервера или места, где хранятся только статические файлы.

Рейтинг:0
флаг us

Здесь может быть применима внутренняя перезапись nginx:

расположение /путь/autoindex.html {
    переписать ^ /путь/ последним;
}

местоположение/путь {
    внутренний; # Это местоположение используется только для внутренних перенаправлений

    включен автоиндекс;

    try_files $uri $uri/ =404;
}

расположение ~ ^/путь {
    ... настройте то, что вы хотите показать с помощью пути
}
флаг il
Ну, я спрашивал о том, чтобы страница автоматического индексирования находилась на пути, отличном от пути, оканчивающегося на `/`. Я знаю, как включить автоиндекс
флаг us
Ах, как глупо с моей стороны. Я обновил ответ.
флаг il
К сожалению, это возвращает 404 для каждого URI с `/path`. Изменение местоположения на `location = /path/` исправляет эту часть, но `/path/autoindex.html` по-прежнему возвращает ошибку 404.
флаг us
Я добавил блок `location`, который обрабатывает внешние запросы к `/path`.
флаг il
Все еще 404 для `/path/autoindex.html`
флаг il
Даже изменение `try_files $uri $uri/=404;` на `try_files $uri $uri/=403;` по-прежнему возвращает 404, говоря мне, что он не попал в другой блок местоположения.

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

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