Назад | Перейти на главную страницу

Почему у Nginx нет разрешений на открытие этого файла?

Сегодня я впервые начал использовать Nginx, и я также плохо знаком с командной строкой, поэтому будьте осторожны.

у меня есть CentOS 7 сервер, на котором размещен файл index.html, к которому я хотел бы получить доступ из Интернета. Однако я получаю 403 Forbidden, а Nginx, похоже, не имеет разрешения на чтение и обслуживание файла. Я пытаюсь понять почему.

Веб-страница находится в домашней папке по адресу /home/Owner/web/apps/webapp/index.html. Вот ошибка, регистрируемая Nginx, когда я пытаюсь получить доступ к этому файлу из Интернета:

[ошибка] 9887 # 0: * 6 "/home/Owner/web/apps/webapp/index.html" запрещено (13: в разрешении отказано), клиент: CLIENT_IP, сервер: my-domain.io, запрос: «ПОЛУЧИТЬ / HTTP / 1.1 ", хост:" my-domain.io "

SELinux включен на сервере. Вот контекст безопасности SELinux для файла index.html:

[user@my-domain.io ~] # ls -lZ /home/Owner/web/apps/webapp/index.html

-rw-r - r--. Владелец Владелец unlimited_u: object_r: httpd_sys_content_t: s0 /home/Owner/web/apps/webapp/index.html

Итак, файл доступен для чтения всем, в чем проблема? Вот контекст безопасности SELinux для процесса nginx:

[user@my-domain.io ~] # ps -auxZ | grep nginx

system_u: system_r: httpd_t: s0 корень 9886 0,0 0,0 121508 2132? Сс 19:50 0:00 nginx: главный процесс / usr / sbin / ngin

system_u: system_r: httpd_t: s0 nginx 9887 0,0 0,0 121512 3604? S 19:50 0:00 nginx: рабочий процесс

system_u: system_r: httpd_t: s0 nginx 9888 0,0 0,0 121512 3604? S 19:50 0:00 nginx: рабочий процесс

неограниченный_у: неограниченный_r: неограниченный_t: s0-s0: c0.c1023 корень 9914 0,0 0,0 112712 960 точек / 0 S + 20:03 0:00 grep --color = auto nginx

Я установил следующие флаги SELinux:

setsebool -P httpd_can_network_connect на

setsebool -P httpd_enable_homedirs на

Интересно, что установка SELinux на Permissive с setenforce 0 не устраняет проблему. Я все еще получаю 403 запрещено. Я безуспешно пытался перезагрузить сервер.

Вот конфигурация http Nginx:

server {
    listen       80;
    listen       [::]:80;
    server_name  my-domain.io;
    root         /home/Owner/web/apps/webapp;
    
    location /api/ {
        proxy_pass "http://localhost:3333";
    }
}

Обратите внимание proxypass директивы для /api/; это отлично работает! Я могу найти эти пути и запросить службу Node, работающую на порту 3333, из браузера. Файлы, которые выполняет узел, находятся в дочернем каталоге для index.html родительский каталог.

Что я упускаю из виду?