Сегодня я впервые начал использовать 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
родительский каталог.
Что я упускаю из виду?