当前位置: 首页 > 知识库问答 >
问题:

Nginx:stat()失败(13:权限被拒绝)

壤驷凯
2023-03-14

我正在使用默认配置,同时添加在我的ubuntu 12.04计算机上安装了nginx的特定目录。

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服务器来提供该目录之外的文件。但是,请检查错误。日志我明白了

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

我已经在/username/test/static上完成了chown-R www-data:www-data,我已经将它们设置为chmod 755。我不知道还需要设置什么。

共有3个答案

公孙宸
2023-03-14

我刚刚在CentOS 7盒子上遇到了同样的问题。

看来我打了塞利努克斯。将selinux置于许可模式(setEnforcePermissive)目前已经解决了这个问题。我会试着找个合适的方法回来。

赏成益
2023-03-14

nginx需要对所有通向网站根目录的目录有x访问权限。

确保在指向站点根目录的路径中的所有目录上都有x。例如,如果站点根为/home/username/siteroot:

chmod +x /home/
chmod +x /home/username
chmod +x /home/username/siteroot
陈志
2023-03-14

nginx在目录中运行,所以如果您不能从nginx用户将cd发送到该目录,那么它将失败(日志中的stat命令也是如此)。确保wow-user可以cd一直到/username/test/stest。您可以通过运行stat来确认失败或成功

sudo -u www-data stat /username/test/static

在您的情况下,可能/username目录是问题所在。通常www.-data没有对其他用户主目录的cd的权限。

在这种情况下,最好的解决方案是将www-data添加到username组:

gpasswd -a www-data username

并确保usernamegroup可以输入路径上的所有目录:

chmod g+x /username && chmod g+x /username/test && chmod g+x /username/test/static

要使更改生效,请重新启动nginx

nginx -s reload
 类似资料:
  • 问题内容: 我正在尝试通过管理页面上传图片,但一直在说: 上载时动态创建文件夹 。 在Traceback中,我发现此命令期间发生错误: 在/usr/lib64/python2.6/os.py第157行中,同时调用 意思是,它不能创建任何文件夹,因为它没有执行此操作的权限 我在服务器中将OpenSuse作为OS。在httpd.conf中,我有这个: 我需要chmod或chown吗? 问题答案: 您需

  • 问题内容: 我将nginx更新为 1.4.7 ,将php 更新为 5.5.12 ,之后得到了 502错误 。在更新之前,一切正常。 nginx-error.log nginx.conf 问题答案: php更新后出现类似错误。PHP固定一个安全漏洞,其中有权限的套接字文件。 打开或,具体取决于您的版本。 取消注释所有权限行,例如: listen.group = www-data listen.mod

  • 更新 结果发现我调用open和close FileOutputStream的频率太高了,这会在某个时候抛出FileNotFoundException。听起来更像是线程问题。

  • 问题内容: 我明白了,不知道这段代码有什么问题。 我正在尝试读取具有绝对路径(仅表示)的文件, 和相对路径(意思是),我希望程序将文件写入给定的任何路径-如果是绝对路径,则应将其写入当前目录;否则,转到给定的路径。 编码: 给出的错误: 我执行代码的方式: 我在这里做错了什么? 问题答案: 您似乎正在尝试使用以下代码替换扩展名: 但是,您似乎混合了数组索引。请尝试以下操作: 请注意在第二行代码中使

  • 问题内容: 我想使用Linux和Python通过广播发送一些数据: 我在根目录下启动此脚本并得到以下错误: 怎么了? 问题答案: 您正在尝试发送到广播地址。不允许,请参见sendto(2)的联机帮助页: EACCES (对于UDP套接字)尝试将其发送到网络/广播地址,就好像它是单播地址一样。 如果您实际上要发送到广播地址,请设置SO_BROADCAST选项:

  • 我在django admin(127.0.0.1:8000/admin)中尝试为用户添加个人资料照片时收到此错误消息 有人能帮我找出原因吗? OSError at /admin/role/role/6/[Errno 13]权限被拒绝:'/User'请求方法: POST请求URL:http://127.0.0.1:8000/admin/role/role/6/Django版本: 1.8.2异常类型: