Я использую конфигурацию по умолчанию при добавлении определенного каталога с nginx, установленным на моем компьютере с Ubuntu 12.04.
server {
#listen 80; ## listen for ipv4; this line is default and implied
#listen [::]:80 default ipv6only=on; ## listen for ipv6
index index.html index.htm;
# Make site accessible from http://localhost/
server_name localhost;
location / {
# First attempt to serve request as file, then
# as directory, then fall back to index.html
root /username/test/static;
try_files $uri $uri/ /index.html;
# Uncomment to enable naxsi on this location
# include /etc/nginx/naxsi.rules
}
...
...
}
Я просто хочу, чтобы простой статический сервер nginx обслуживал файлы из этого каталога. Однако, проверяя, error.log
я вижу
2014/09/10 16:55:16 [crit] 10808#0: *2 stat() "/username/test/static/index.html" failed (13: Permission denied), client:, server: localhost, request: "GET /favicon.ico HTTP/1.1", host: "domain"
2014/09/10 16:55:16 [error] 10808#0: *2 rewrite or internal redirection cycle while internally redirecting to "/index.html
Я уже сделал chown -R www-data:www-data
на /username/test/static
, я поставил их chmod 755
. Не знаю, что еще нужно установить.
www-data
пользовательcd
перейти в/username/test/static
каталог:sudo -u www-data cd /username/test/static
Ответы:
Nginx работает в каталоге, поэтому, если вы не можете
cd
перейти в этот каталог от пользователя nginx, он завершится ошибкой (как иstat
команда в вашем журнале). Убедитесь, чтоwww-user
банкаcd
до/username/test/static
. Вы можете подтвердить, что программаstat
завершится неудачно или успешно, запустивВ вашем случае, вероятно,
/username
проблема здесь в каталоге. Обычноwww-data
не имеет прав доступаcd
к домашним каталогам других пользователей.Лучшим решением в этом случае было бы добавить
www-data
вusername
группу:и убедитесь, что
username
группа может войти во все каталоги по пути:Чтобы ваши изменения работали, перезапустите nginx
источник
umask
. Если вам нужно более общее решение, для которого не требуетсяchmod
каждый новый каталог, то решение есть. Это требует обратного группового объединения (username
вwww-data
группу) и использованияsetgid
. Не стесняйтесь размещать новый вопрос для более подробного описания, и я буду рад ответить.nginx
пользователь может получить доступ к каталогу моего веб-сайта, но все же в журналах ошибок говорится, что разрешение отклонено.У меня была такая же проблема с коробкой CentOS 7.
Кажется, я попал в selinux. Перевод selinux в разрешающий режим (
setenforce permissive
) на данный момент решил проблему. Я постараюсь вернуться с правильным исправлением.источник
ls -Z myFile.js
покажет контекст SELinux:-rw-r--r--. nginx nginx unconfined_u:object_r:user_home_t:s0 myFile.js
Используйтеchcon -v --type=httpd_sys_content_t myFile
для изменения содержимого SELinux.sudo setenforce 0
исправил это для меня.SELINUX
значение наdisabled
in/etc/selinux/config
, а затем выполнить перезагрузку. Когда он установленpermissive
, он все еще может выполнять проверки «за кулисами» (используя ценный процессор), но не предпринимать никаких действий.Nginx должен иметь доступ + x ко всем каталогам, ведущим к корневому каталогу сайта.
Убедитесь, что у вас есть + x во всех каталогах на пути, ведущем к корню сайта. Например, если корень сайта / home / username / siteroot:
источник
В CentOS 7.0 у меня была эта
Access Deined
проблема, вызванная SELinux, и эти шаги решили проблему:Обновление: просто примечание из того, что я узнал при использовании виртуальных серверов Linux Digitalocean, или, как они их называют, капли . Использование SELinux требует приличного количества оперативной памяти. Скорее всего, вы не сможете запускать и управлять SELinux в капле с менее чем 2 ГБ оперативной памяти.
источник
setenforce 0
. Однако, оглядываясь назад на то, что на самом деле делает это решение, я понял, что мне нужно повторно запустить команды, чтобы обновить разрешения для пользователя nginx. Похоже, это сработало, и я смог вернуть SELinux к принудительному исполнению.Возможно, у вас работает Linux с усиленной безопасностью, поэтому добавьте для этого правило. У меня было разрешение 13 ошибок, хотя разрешения были установлены и пользователь существовал ..
chcon -Rt httpd_sys_content_t /username/test/static
источник
Симптом:
Не удалось загрузить изображения в медиатеку WordPress.
Причина:
(CentOS)
yum update
Ошибка:
Решение:
chown -R www-data:www-data /var/lib/nginx
источник
По умолчанию статические данные при установке nginx будут в / var / www / html. Таким образом, вы можете просто скопировать свою статическую папку в / var / html / и установить
в ngix.conf (или / etc / nginx / sites-available / default)
Это сработало для меня на ubuntu, но я думаю, что для других дистрибутивов это не должно сильно отличаться.
Надеюсь, поможет.
источник
Измените свою
nginx.conf
user
собственность наwww-static
files owener.источник
Я столкнулся с этой проблемой, я решил дать разрешения пользователю nginx и сгруппировать что-то вроде этого:
источник
В моем случае папка, которая обслуживала файлы, была символической ссылкой на другую папку, созданную с помощью
Несмотря на то, что разрешения (пользователь и группа) в целевой папке (символическая ссылка) правильные, у меня все еще была ошибка, потому что Nginx также должен был иметь разрешения для всей иерархии исходной папки.
источник
Я наконец нашел свой путь. Вкратце, допустим, у вас есть имя пользователя,
joe
и вы держите веб-сайт в своей личной файловой системе/home/joe/path/to/website
.Вы буквально должны сказать системе, что
nginx
ваш друг.Место
nginx
вjoe
группе:После этого, если по-прежнему не работает, проверьте права доступа к
/home/joe
каталогу. Вероятно, это причина, по которой nginx не может получить доступ к файлу, потому что даже если он теперь ваш друг, вы должны открыть ему дверь в свой дом:Вот и все. Это буквально все, что вам нужно сделать, чтобы предоставить nginx доступ к вашим локальным файлам :)
Я не думаю, что у этого метода
nginx
есть проблемы с безопасностью, потому что это высокий авторитет, и только администратор может изменить группу.nginx
теперь можно читать, что находится вjoe
каталогах. Это нарушение безопасности только в том случае, если владелецnginx
учетной записи отличается от пользователя, у которого вы открываете доступ к каталогу, но в моем случае я являюсь владельцем обеих сторон, то есть в локальном контексте.источник
У меня была такая же проблема, я использую Plesk Onyx 17 с Centos7. Я мог видеть эту ошибку в proxy_error_log в журналах затронутого домена. Все каталоги / файлы в / var / www / vhosts / принадлежат соответствующим пользователям (владельцам доменов), и вы можете видеть, что все они находятся в группе psacln. Решением было добавить nginx в эту группу, чтобы он мог видеть, что ему нужно:
И действительно, перезапустите nginx и перезагрузите страницу с помощью Ctrl + F5.
источник
Я нашел решение: переместил папку в папку конфигурации nginx, в моем случае «/ etc / nginx / my-web-app». А затем изменил права на пользователя root "sudo chown -R root: root" my-web-app ".
источник
Вы также можете указать, какой пользователь будет запускать nginx. В файле nginx.conf внесите следующие изменения:
Вы можете добавить указанную выше строку в качестве первой строки в конфигурацию nginx. Вы можете написать имя любого пользователя, у которого есть разрешение на запись в этот каталог.
источник
Обычно это проблема привилегий ... Для меня это потому, что я использую / root / ** в качестве корня nginx, ему нужны более высокие привилегии. Самый простой способ - просто переместить проект в каталог, созданный вами.
источник