未找到 NGINX(20:不是目录)

未找到 NGINX(20:不是目录)

当我尝试访问名为“文件”的文件时,出现错误 404 - 未找到文件。

我在服务器上检查了它是否存在。是的,它确实存在。

我检查了该文件是否属于 webuser。是的。

我检查了正确的权限。775 应该可以工作,所以是的。

问题是,该文件没有被视为文件。Nginx 认为它是一个文件夹并搜索 index.html 文件。

2017/09/14 11:26:50 [error] 15085#15085: *3 "/srv/www/myfolder/file/index.html" is not found (20: Not a directory), client: 192.168.1.35, server: , request: "GET /myfolder/file/ HTTP/1.1", host: "example.com", referrer: "http://example.com/myfolder/"

我该如何改变这种情况?我也尝试了几个浏览器(FF、Safari)以及 cURL 和 wget。仍然出现 404 错误

更新 1

 server {

            listen 80 default_server;
            rewrite ^([^.]*[^/])$ $1/ permanent;
            gzip off;

       location /mirror {
                alias /srv/mirror;
                autoindex on;
        }

它是一个 Debian 镜像 - 如果我注释掉重写,我就会收到此错误:

 BZ2_bzread: /var/lib/apt/lists/partial/mirror.com_debian_dists_stretch_main_i18n_Translation-en.bz2 Read error (-5: DATA_ERROR_MAGIC)

如果我再次评论说,它无法找到由于重定向而导致的发布文件...

答案1

你好,我可以看到您的 GET 请求是request: "GET /myfolder/file/

如果它是一个文件,GET 请求末尾应该没有反斜杠。

正确的请求将是。

request: "GET /myfolder/file

答案2

如果您希望重定向不以 结尾/,则应将其从重定向配置中删除。

换句话说,改变

        rewrite ^([^.]*[^/])$ $1/ permanent;

        rewrite ^([^.]*[^/])$ $1 permanent;

答案3

我刚刚在我的服务器上修复了这个问题。错误的原因是一个符号链接。

我刚刚在我的服务器的 nginx 配置上遇到了这个(不太清楚的)错误消息:

"/path/to/index.html" is not found (20: Not a directory)

经过反复试验后,我确定实际原因是 nginx 无法访问站点的文档根目录,因为部分路径包含root符号链接,但我已disable_symlinks on;在主nginx.conf文件中设置。

注释掉该disable_symlinks on;行或将其更改为disable_symlinks off;修复该问题。

也可以看看:

相关内容