Nginx:为什么索引指令不起作用,403禁止?

时间:2016-03-22 15:23:31

标签: nginx

nginx.conf如下:

user  www-data;
worker_processes  1;

error_log  logs/error.log;
error_log  logs/error.log  notice;
error_log  logs/error.log  info;

events {
    worker_connections  1024;
}
http {
    server {
        listen 8080;
        server_name example.com;
        root /tmp/test/example;

        location = / {
            index index.html;
        }

        location / {
            root /tmp/test/mydomain;
        }
    }
}

errors.log是:
2016/03/22 23:07:56 [错误] 17763#0:* 1目录索引" / tmp / test / example /"是禁止的,客户端:127.0.0.1,server:example.com,请求:" GET / HTTP / 1.1",主机:" example.com:8080"

但是当我评论root /tmp/test/example行时,它运行正常。所以我想知道index重定向是如何工作的?

1 个答案:

答案 0 :(得分:0)

在我看来,index.html目录中没有/tmp/test/example个文件。

您的location = /阻止测试是否存在文件(index.html),如果不存在,则会生成403响应。

将URI重写为/index.html后,它实际上由location /块处理。

我怀疑删除第一个root指令时它起作用的原因是因为默认(或全局)root接管“欢迎使用nginx”index.html文件的位置位于。因此,它通过存在测试,然后提供您的文件。

我应该补充一点,基于您的观察和我的实验,上述主要是猜测。