NGINX не обслуживает HTML-файлы из корневого каталога под пользователем www-data.

Вопрос или проблема

NGINX обслуживает веб-сайт из корневого каталога /home/ubuntu/frontend

nginx.conf:

#user www-data;
user ubuntu;

sites-enabled:

server {
        server_name giftbutton.live;
        listen 80;

        root /home/ubuntu/frontend;
        index index.html;
        }

каталог:

drwxrwxrwx  4 www-data www-data  4096 Jan 11 22:36 frontend

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

Пользователь www-data действительно существует в системе:

www-data:x:33:33:www-data:/var/www:/usr/sbin/nologin

Служба Nginx запускается от имени пользователя ubuntu на машине. Так Nginx устанавливается, и я его не трогал.

Вопрос заключается в том, почему тогда Nginx отказывается обслуживать каталог под пользователем www-data, когда каталог принадлежит этому пользователю?

Буду благодарен за любые идеи!

Ответ или решение

Здравствуйте,

Основная проблема, о которой вы упоминаете, связана с ошибкой 403 при попытке NGINX обслуживать HTML файлы из корневого каталога /home/ubuntu/frontend от имени пользователя www-data. Давайте разберемся в возможных причинах и решениях этой проблемы, используя систематический подход.

Теория

Ошибка 403 указывает на недостаток разрешений для доступа к файлам или каталогам. Хотя вы установили права доступа 777 для каталога frontend, проблема может заключаться не только в прав доступа, но и в контексте безопасности и других настройках системы. Несоответствие правильных привилегий или конфигурации в NGINX может вызвать такие симптомы. Также необходимо учесть, что NGINX, работающий от имени пользователя www-data, должен иметь соответствующие права на выполнение операций с файлами в каталоге.

Пример

В вашей конфигурации NGINX в разделе sites-enabled вы указываете корневой каталог как /home/ubuntu/frontend. Каталог, как вы отметили, имеет права 777 и принадлежит www-data. Однако, несмотря на это, смена пользователя NGINX с ubuntu на www-data вызывает ошибку 403.

Применение

  1. Права доступа и владение: Убедитесь, что сам каталог и все вышестоящие каталоги в дереве (/home, /home/ubuntu) также доступны для чтения и выполнения пользователю www-data. Это можно проверить с помощью команд:

    namei -m /home/ubuntu/frontend

    Проверьте, чтобы в выходных данных пользователя www-data были разрешения на доступ к каждому из элементов пути.

  2. Дополнительные ограничения: Поскольку NGINX обычно запускается в среде, где также могут существовать другие ограничения, такие как SELinux или AppArmor, убедитесь, что они не блокируют доступ. Если у вас включен SELinux, используйте команду:

    getenforce

    Для временного перехода в разреженный режим используйте:

    setenforce 0
  3. Пользователь NGINX: Поскольку вы установили NGINX с пользователя ubuntu, а его конфигурация теперь изменена, убедитесь, что все изменения сохранены и перезапустите сервис:

    sudo systemctl restart nginx
  4. Логи ошибок: Проверьте файлы журналов NGINX для подробной информации об ошибках, это может дать более ясное представление о проблеме:

    sudo tail -f /var/log/nginx/error.log

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

С уважением,
[Ваше имя]

Оцените материал
Добавить комментарий

Капча загружается...