前一篇文章,记录了nginx中虚拟主机与请求分发,这一篇文件记录Nginx中文件路径的定义。

 

1.以root方式设置资源路径

语法:root path;

默认:root html;

配置块:http、server、location、if

如:

location /download/ {
    root webhtml;
}

在这个配置中,如果你访问/download/index/test.html,web服务器将会返回webhtml/download/index/test.html文件。

 

2)以alias方式设置资源路径

语法:alias path;

配置:location

alias配置与root配置一样,都是用来设置文件资源路径的,不同的地方在于如何解读location后面的url参数,这里用一个事例来记录。如果一个请求的url为/conf/nginx.conf,这个对应的文件在服务器的us r/local/nginx/conf/nginx.conf,那我们使用root和alias应该如何来配置呢?

location conf {
    alias usr/local/nginx/conf/;
    root usr/local/nginx/;
}

 

注:如果使用alias来指明路径的话,需要添加上conf,才能发挥正确的数据,root的话,会主动将匹配到的url前缀添加到路径中,所以不需要添加conf路径。

 

3)访问首页

语法:index file;

默认:index index.html;

配置块:http、server、location

一般情况下,直接访问域名的话,都会访问到网站的首页,在Nginx中首页是通过index参数来进行配置的,index后面可以跟多个文件参数,它会按顺序找到第一个文件。

 

4)根据返回码重定向页面

语法:error_page code[code...][=|=answer-code]url|@named_location

配置块:http、server、location、if

我们在访问一些网站时,可以看到一些错误页面,最常见的应该就是404了。在Nginx配置中,如果某一个请求返回错误吗时,匹配上来error_page配置中的code,请求将会重定向到新的url中。

如:

error_page 404 404.html;
error_page 502 503 50x.html;
error_page 403 http://example.com/forbidden.html;
error_page 404 = @fetch;

 

虽然重定向之后会返回指定的页面,但是返回的http的错误码还是与之前一致。可以通过如下方式来修改错误码:

error_page 404 = 200 empty.gif;
error_page 404 = 403 forbidden.gif;

 

也可以不指定返回码,就是返回重定向后的实际情况。

error_page 404 = /empty.gif;

 

如果不想修改url,而是要交给了一个loaction处理的话,可以如下:

location / {
    error_page 404 @fallbak;
}
location @fallbak {
    proxy_pass http://xxx.xxx.xxx.xxx/backend
}


5)是否可以递归使用error_page

语法:recursive_error_pages [on|off];

默认:recursive_error_pages off;

配置块:http、location、server

 

6)try_files

语法:try_files path1[path2]uri;

配置块:server、location

try_files后跟着若干个路径,最后必须有uri参数。其作用是:按顺序读取每一个文件,将成功读取到的第一个文件返回给用户,结束请求。如果没有找到一个可以有效读取的文件,就将请求重定向到uri上。

作者:红雨