Почему возникает ошибка 404 Not Found в Ubuntu?

Я использую последнюю версию Ubuntu с установленным nginx и пытаюсь развернуть сайт на локальном компьютере. Я создал директорию для сайта по пути /home/user/web/website.loc, добавил в неё файл index.html с текстом. Затем я создал конфигурационный файл в директории sites-available и создал символьную ссылку на него в директории sites-enabled. Также я указал сайт в файле hosts с адресом 127.0.0.1, сбросил кэш браузера и перезапустил nginx. Однако при открытии website.loc я получаю ошибку 404 Not Found с подписью nginx. В логах nginx указано, что причина в "permission denied". Я проверил права доступа к папкам сайта, и они все установлены на root. Я добавил к ним права пользователя, но проблема с 404 осталась. Как мне решить эту проблему?
  • 7 ноября 2024 г. 13:33
Ответы на вопрос 2
Ошибка 404 Not Found в вашем случае, судя по описанию логов, вызвана тем, что Nginx не имеет права доступа к директории или файлам вашего сайта. Вот несколько шагов, которые помогут вам исправить эту проблему:

1. **Проверьте права доступа**:
   Убедитесь, что директория и файлы вашего проекта имеют правильные права доступа. Обычно для веб-сервера необходимо установить права так, чтобы пользователь, под которым работает Nginx, имел доступ к этим файлам.

   По умолчанию Nginx работает от пользователя `www-data`. Вам нужно изменить владельца и права доступа к директории сайта. Выполните в терминале следующие команды:

   ```bash
   sudo chown -R www-data:www-data /home/user/web/website.loc
   sudo chmod -R 755 /home/user/web/website.loc
   ```

   Эти команды изменят владельца на `www-data` и установят права доступа, позволяющие пользователю читать и входить в директорию.

2. **Проверьте конфигурацию Nginx**:
   Убедитесь, что ваш конфигурационный файл правильно настроен и путь к корню сайта верен. Например:

   ```nginx
   server {
       listen 80;
       server_name website.loc;

       location / {
           root /home/user/web/website.loc;
           index index.html;
       }
   }
   ```

   После внесения изменений не забудьте протестировать конфигурацию и перезапустить Nginx:

   ```bash
   sudo nginx -t
   sudo systemctl restart nginx
   ```

3. **Проверьте наличие файла index.html**:
   Убедитесь, что файл `index.html` действительно находится по указанному пути. Вы можете проверить его наличие командой:

   ```bash
   ls -l /home/user/web/website.loc/index.html
   ```

4. **Проверьте SELinux (если используется)**:
   Если у вас включен SELinux, он может блокировать доступ Nginx к файлам. Чтобы временно отключить его, используйте команду:

   ```bash
   sudo setenforce 0
   ```

   Если это решит проблему, вам потребуется настроить SELinux, чтобы разрешить доступ Nginx.

5. **Проверьте логи Nginx**:
   Если ошибка не исчезнет, проверьте логи ошибок Nginx для получения более подробной информации. Логи обычно находятся по пути `/var/log/nginx/error.log`.

После выполнения всех этих шагов вы должны увидеть страницу вашего сайта по адресу `http://website.loc`.
А Вы права вебсерверу дали на папку и файлы ? 
это который пользователь www-data
Похожие вопросы