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. Я не знаю, что еще нужно установить.

1065   11  

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

    Ничего не найдено.