Рейтинг:2

403 в nginx при доступе к каталогу

флаг cn

Я сделал очень простой сервер, чтобы проверить, как URL-адрес с папкой ведет себя в nginx. Nginx работает в докере (nginx: последнее изображение).Nginx запускает пользователя нгинкс (по умолчанию установлено в /etc/nginx/nginx.conf).

сервер {
        имя_сервера пример.com;

        местоположение / тест / {
                корень /var/www/тест;
                индекс index.html;
        }
}

и эта структура:

/вар/www
ââ тест
    âââ index.html

кошка /var/www/test/index.html
Тестовое задание

лс -л /вар/ | grep www
drwxr-xr-x 3 root root 4096 15 января 23:33 www

ls -l /var/www/test/
-rw-r--r-- 1 root root 7 15 января 21:08 index.html

Теперь у меня есть эта проблема:

завиток http://example.com/test/
<html>
<head><title>403 Запрещено</title></head>
<тело>
<center><h1>403 Запрещено</h1></center>
<hr><center>nginx/1.21.5</center>
</тело>
</html>
завиток http://example.com/test
<html>
<head><title>301 перемещен навсегда</title></head>
<тело>
<center><h1>301 перемещен навсегда</h1></center>
<hr><center>nginx/1.21.5</center>
</тело>
</html>

Я ожидаю увидеть «Тест» при доступе http://example.com/test или же http://example.com/test/. Что я делаю не так?

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

Происходят две отдельные вещи.

nginx добавляет URI запроса в конец пути корень директива при подаче запроса. В вашем случае URL-адрес, http://example.com/test, нормализованный URI /тестовое задание и ваш корень является /var/www/тест.

Это заставляет nginx искать index.html в /var/www/test/test/index.html.

Сделать сервер nginx /var/www/test/index.html, вам нужно либо использовать:

корень /var/www;

или же

псевдоним /var/www/test;

С использованием корень является предпочтительным способом.

Для http://example.com/test часть, nginx отправляет 301 редирект на http://example.com/test/ когда есть каталог тестовое задание на сервере.Ваш вопрос не показывает, что корень директива на верхнем уровне, поэтому я не знаю, на каком пути существование тестовое задание проверено.

PhilHarmonie avatar
флаг cn
Но почему я не вижу 404 для `/var/www/test/test/index.html`?
флаг us
На самом деле nginx возвращает 403 для `http://example.com/test/` и 404 для запроса `http://example.com/test/index.html` с вашей текущей конфигурацией. Почему именно так работает nginx, я не знаю.

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

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