configuration - Nginx 403 错误 : directory index of [folder] is forbidden

标签 configuration nginx http-status-code-403 domain-name

我有 3 个域名,并尝试使用 Nginx 在一台服务器(Digital Ocean Droplet)上托管所有 3 个站点。

mysite1.名称 mysite2.名称 mysite3.name

其中只有 1 个有效。另外两个会导致 403 错误(方式相同)。

在我的 nginx 错误日志中,我看到:[错误] 13108#0: *1 “/usr/share/nginx/mysite2.name/live/”的目录索引被禁止

我的站点启用配置是:

server {
        server_name www.mysite2.name;
        return 301 $scheme://mysite2.name$request_uri;
}
server {
        server_name     mysite2.name;

        root /usr/share/nginx/mysite2.name/live/;
        index index.html index.htm index.php;

        location / {
                try_files $uri $uri/ /index.html index.php;
        }

        location ~ \.php$ {
                fastcgi_split_path_info ^(.+\.php)(/.+)$;
                fastcgi_pass unix:/var/run/php5-fpm.sock;
                fastcgi_index index.php;
                include fastcgi_params;
        }
}

所有 3 个站点都有几乎相同的配置文件。

每个站点的文件都位于/usr/share/nginx/mysite1.name/someFolder 等文件夹中,然后/usr/share/nginx/mysite1.name/live 是该文件夹的符号链接(symbolic link)。 (对于 mysite2 和 mysite3 也是如此。)

我看过Nginx 403 forbidden for all files但这没有帮助。

对可能出现的问题有什么想法吗?

最佳答案

如果您关闭了目录索引,并且遇到了此问题,可能是因为您使用的 try_files 有一个目录选项:

location / {
  try_files $uri $uri/ /index.html index.php;
}                 ^ that is the issue

删除它,它应该可以工作:

location / {
  try_files $uri /index.html index.php;
} 

为什么会发生这种情况

TL;DR:这是因为nginx会尝试索引该目录,并被自身阻止。抛出OP提到的错误。

try_files $uri $uri/ 表示从根目录尝试 uri 指向的文件,如果该文件不存在,则尝试使用目录(因此/)。当nginx访问一个目录时,它会尝试对其进行索引并将其中的文件列表返回给浏览器/客户端,但是默认情况下目录索引是禁用的,因此它会返回错误“Nginx 403错误:[文件夹]的目录索引”是被禁止的”。

目录索引由autoindex选项控制:https://nginx.org/en/docs/http/ngx_http_autoindex_module.html

关于configuration - Nginx 403 错误 : directory index of [folder] is forbidden,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19285355/

相关文章:

ubuntu - 在 Digital Ocean 服务器上的 Ubuntu 上配置 nginx(不是 root 用户)

java - 为什么我的代码返回 403 禁止访问

python - Django API Post 方法返回 403 错误

configuration - 当新功能需要对代码库进行大量更改时,如何处理功能切换?

ssl - 使用 Phoenix/Elixir 和 nginx 在服务器上设置 https

c# - 在应用程序之间共享设置

node.js - 为以下应用程序结构编写 docker 的正确方法是什么?

apache - 将所有 Apache 2.2 403 Forbidden 重定向到 404 Not Found

java - Akka (java) 如何在 application.config 中提供自定义值,如 appId 和 key

regex - 在配置文件和 .htaccess 中的 Apache 指令中使用 RegEx