Nginx: stat () failed (13: permission denied)
Я использую конфигурацию по умолчанию при добавлении определенного каталога с 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 on /username/test/static, Я установил их в chmod 755. Я не знаю, что еще нужно установить.
11 ответов:
Nginx работает в каталоге, так что если вы не можете
cdв этот каталог от пользователя nginx, то он не будет работать (как и
У меня только что была такая же проблема на коробке CentOS 7.
Кажется, я попал в SELinux. Перевод selinux в разрешительный режим (
setenforce permissive) работал вокруг проблемы на данный момент. Я постараюсь вернуться с правильным решением.
на CentOS 7.0 у меня было это
Access Deinedпроблема, вызванная SELinux и эти шаги решили проблему:yum install -y policycoreutils-devel grep nginx /var/log/audit/audit.log | audit2allow -M nginx semodule -i nginx.ppобновление: просто примечание из того, что я узнал при использовании виртуальных серверов Linux digitalocean, или как они их называют капли. Использование SELinux требует приличного объема оперативной памяти. Это, скорее всего, как вы не сможете работать и управление SELinux на капле с менее чем 2 ГБ оперативной памяти.
Nginx должен иметь + x доступ ко всем каталогам, ведущим к корневому каталогу сайта.
убедитесь, что у вас есть +x на всех каталогах в пути, ведущем к корню сайта. Например, если корень сайта /home / username/siteroot:
chmod +x /home/ chmod +x /home/username chmod +x /home/username/siteroot
возможно, вы используете Linux с улучшенной безопасностью, поэтому добавьте правило для этого. У меня было разрешение 13 ошибок, хотя разрешения были установлены и пользователь существовал..
chcon -Rt httpd_sys_content_t /username/test/static
симптомы:
не удалось загрузить изображения в медиатеку WordPress.
причина:
(CentOS)
yum updateошибка:
2014/10/22 18:08:50 [crit] 23286#0: *5332 open() "/var/lib/nginx/tmp/client_body/0000000003" failed (13: Permission denied), client: 1.2.3.4, server: _, request: "POST /wp-admin/media-new.php HTTP/1.1", host: "example.com", referrer: "http://example/wp-admin/media-new.php"устранение:
chown -R www-data:www-data /var/lib/nginx
по умолчанию статические данные, когда вы устанавливаете nginx, будут находиться в /var/www/html. Таким образом, вы можете просто скопировать статическую папку в /var/html/ и установить
root /var/www/<your static folder>в ngix.conf (или /etc/nginx/sites-доступно/по умолчанию)
это сработало для меня на ubuntu, но я думаю, что это не должно сильно отличаться для других дистрибутивов.
надеюсь, что это помогает.
в моем случае папка, которая обслуживала файлы, была символической ссылкой на другую папку, сделанную с помощью
ln -sf /origin /var/www/destinationнесмотря на то, что разрешения (пользователь и группа), где правильно в папке назначения (символическая ссылка), у меня все еще была ошибка, потому что Nginx должен был иметь разрешения на всю иерархию исходной папки.
У меня была та же проблема, я использую Plesk Onyx 17 с Centos7. Я мог видеть эту ошибку в proxy_error_log под журналами затронутого домена. Все dirs / файлы в /var/www/ vhosts / принадлежат соответствующим пользователям (владельцам доменов), и вы можете видеть, что все они находятся в группе psacln. Поэтому решение состояло в том, чтобы добавить nginx также в эту группу, чтобы он мог видеть, что ему нужно:
usermod -aG psacln nginxи действительно, перезагрузите nginx и перезагрузите страницу с помощью Ctrl+F5.
я столкнулся с этой проблемой, я решил ее, чтобы дать разрешения пользователю nginx и группе что-то вроде этого:
chown -R nginx:nginx /username/test/static
Я нашел работу вокруг: Переместил папку в папку конфигурации nginx, в моем случае "/etc/nginx/my-web-app". А затем изменил разрешения для пользователя root " sudo chown-R root: root "my-web-app".
Comments