深入理解Nginx~文件路径的定义

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

语法: root path;
默认: root html;
配置块: http、server、location、if

eg.定义资源文件相对于HTTP请求的根目录

location /download/ {
	root optwebhtml;
}

在上面的配置中,如果有一个请求的URI是/download/index/test.html,那么Web服务器将
会返回服务器上optwebhtml/download/index/test.html文件的内容。

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

语法: alias path;
配置块: location

与root的不同点主要在于如何解读紧跟location后
面的uri参数,这将会致使alias与root以不同的方式将用户请求映射到真正的磁盘文件上。例
如,如果有一个请求的URI是/conf/nginx.conf,而用户实际想访问的文件
在usrlocal/nginx/conf/nginx.conf,那么想要使用alias来进行设置的话,可以采用如下方式:

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

alias后面还可以添加正则表达式

location ~ ^/test/(\w+)\.(\w+)$ {
	alias usrlocal/nginx/$2/$1.$2;
}

这样,请求在访问/test/nginx.conf时,Nginx会返回usrlocal/nginx/conf/nginx.conf文件中的内容。

3、访问首页

语法: index file...;
默认: index index.html;
配置块: http、server、location

index后可以跟多个文件参数,Nginx将会按照顺序来访问这些文件,

location {
	root path;
	index index.html htmlindex.php /index.php;
}

        接收到请求后,Nginx首先会尝试访问path/index.php文件,如果可以访问,就直接返回文件内容结束请求,否则再试图返回path/htmlindex.php文件的内容,依此类推。

4、根据HTTP返回码重定向页面

语法: error_page code[code...][=|=answer-code]uri|@named_location
配置块: http、server、location、if

当对于某个请求返回错误码时,如果匹配上了error_page中设置的code,则重定向到新
的URI中。

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

注意,虽然重定向了URI,但返回的HTTP错误码还是与原来的相同。用户可以通
过“=”来更改返回的错误码

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

也可以不指定确切的返回错误码,而是由重定向后实际处理的真实结果来决定,这时,
只要把“=”后面的错误码去掉即可

error_page 404 = /empty.gif;

如果不想修改URI,只是想让这样的请求重定向到另一个location中进行处理,那么可以
这样设置:

location / (
	error_page 404 @fallback;
) 
location @fallback (
	proxy_pass http://backend;
)

这样,返回404的请求会被反向代理到http://backend 上游服务器中处理

5、是否允许递归使用error_page

语法: recursive_error_pages[on|off];
默认: recursive_error_pages off;
配置块: http、server、location

6、try_files

语法: try_files path1[path2]uri;
配置块: server、location

        尝试按照顺序访问每一个path,如果可以有效地读取,就直接向用户返回这个path对应的文件结束请求,否则继续向下访问。如果所有的path都找不到有效的文件,就重定向到最后的参数
uri上。因此,最后这个参数uri必须存在,而且它应该是可以有效重定向的

try_files systemmaintenance.html $uri $uri/index.html $uri.html @other;
location @other {
	proxy_pass http://backend;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值