Рейтинг:0

Невозможно обслуживать статические файлы с помощью сервера Nginx (ошибка Nginx 403 Forbidden)

флаг bs

У меня установлен Nginx 1.18.0 на Ubuntu 20.04. Я пытаюсь обслуживать (многие) пользовательские файлы HTML через Nginx. Файлы HTML содержат анимацию онлайн-изображений и сопоставление. Некоторые файлы HTML также имеют связанные файлы JS и CSS.

Вместо использования значений по умолчанию я создал серверный блок мой_домен как это:

mkdir -p /var/www/мой_домен/html
chown -R my_username /var/www/my_domain/html
chmod -R 755 /var/www/мой_домен
ln -s /etc/nginx/сайты-доступны/мой_домен /etc/nginx/sites-enabled/

Потом в качестве теста поставил my_html1.html (здесь нет связанного JS/CSS) внутри /var/www/мой_домен/html и попытался получить доступ через браузер Mozilla Firefox. я осознаю 403 Ошибка запрещена.

Я погуглил ошибку и попробовал предоставленные предложения здесь, но пока безуспешно. Например, я попытался назначить право собственности на мой_домен каталог пользователю www-data, но не помогло.

chown -R www-данные: www-данные /etc/nginx/сайты-доступны/мой_домен

Вот как мой nginx.conf выглядит как.

www-данные пользователя;
рабочие_процессы авто;
pid /run/nginx.pid;
включить /etc/nginx/modules-enabled/*.conf;
События {
        worker_connections 768;
}
http {
        отправить файл включен;
        tcp_nopush включен;
        tcp_nodelay включен;
        keepalive_timeout 65;
        типы_хэш_макс_размер 2048;
        server_names_hash_bucket_size 64;
        включить /etc/nginx/conf.d/*.conf;
        включить /etc/nginx/sites-enabled/*;
}

и /etc/nginx/доступные сайты/мой_домен

сервер {
        слушать 80;

        корень /var/www/мой_домен/html;
        индекс my_html1.html;

        имя_сервера мой_домен www.мой_домен;

        место расположения / {
                try_files $uri $uri/ =404;
                включен автоиндекс;
                autoindex_exact_size выключен;
        }
}

Может ли кто-нибудь помочь мне решить эту проблему?

drookie avatar
флаг za
Ответ всегда находится в `error.log`.
khajlk avatar
флаг bs
В журнале ошибок сообщается об отказе в доступе, в частности: `*16 open() "/var/www/my_domain/html/my_html_file.html" не удалось (13: Отказано в доступе), клиент: 127.0.0.1, сервер: my_domain, запрос: "GET /my_html_file.html HTTP/1.1",` но, я думаю, это также видно из ошибки 403 браузера.
drookie avatar
флаг za
Тогда nginx просто не хватает разрешения *read/execute* для каталогов и *read* для файлов.
khajlk avatar
флаг bs
Вы имели в виду, что у пользователя `www-data` нет этих разрешений? Итак, `chown 755 -R www-data path/to/directory` это то, что мне нужно?
khajlk avatar
флаг bs
Я осторожен в предоставлении ненужных разрешений и хочу избежать chmod 777. Хотите опубликовать предложенный ответ?
drookie avatar
флаг za
Неа. Это намного ниже базового уровня.
khajlk avatar
флаг bs
и какой базовый уровень нужен?
drookie avatar
флаг za
Тот, который приходит после прочтения одной случайной книги об UNIX (вероятно, не до конца) и поиска вашего вопроса в гугле (вероятно, нажатия кнопки *Повезло*).
djdomi avatar
флаг za
пожалуйста, поделитесь выводом `ls -Rl var/www/my_domain/html/`

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

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