栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 系统运维 > 运维 > Linux

Nginx之location若干注意事项

Linux 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Nginx之location若干注意事项

一. root与alias的区别

Nginx中可以通过root和alias两个属性指定web资源文件的路径,但二者的配置范围和解释方式是有区别的。
配置范围的差异很明确,即alias属性只能用于location配置段,而root属性还可以用于server、http等配置段。
但root属性和alias属性的解释方式的差异则有些隐蔽,理解有误容易掉坑,造成404错误等。

[root]
语法:root path
默认值:root html
配置段:http、server、location、if

[alias]
语法:alias path
配置段:location

示例:

server {
	listen 80;
	server_name www.dancen.com;
	root /home/site;

	location /.well-known {
		root /home/dancen;
	}

	location /src {
		alias /mnt/volume/site/;
		
		location ~* .(htm|html)$ {
			expires 300s;	
		}
		
		location ~* .(jpg|jpeg|png|gif|svg|webp|bmp|ico)$ {
			expires 360d;
		}
	}
	
	location /service {
		proxy_redirect off;
		proxy_pass http://127.0.0.1:8080;
		proxy_http_version 1.1;
		proxy_set_header Upgrade $http_upgrade;
		proxy_set_header Connection "upgrade";
		proxy_set_header Host $http_host;
	}
}

示例解释:
示例中,location属性将域名下不同的url引导到了不同的位置。

  1. http://www.dancen.com/test
    没有匹配任何已定义的location,
    此时Nginx将被引导至server>root属性定义的/home/site目录寻找文件,例如对于链接:
    http://www.dancen.com/test/file.jpg
    其对应的文件为:
    /home/site/test/file.jpg

  2. http://www.dancen.com/.well-known
    匹配:
    location /.well-known { root /home/dancen;}
    此时Nginx将被引导至location>root属性定义的/home/dancen目录寻找文件,例如对于链接:
    http://www.dancen.com/.well-known/file.jpg
    其对应的文件为:
    /home/dancen/.well-known/file.jpg

  3. http://www.dancen.com/src
    匹配:
    location /src { alias /mnt/volume/site/;}
    此时Nginx将被引导至location>alias属性定义的/mnt/volume/site目录寻找文件,例如对于链接:
    http://www.dancen.com/src/file.jpg
    其对应的文件为:
    /mnt/volume/site/file.jpg

此处可以看到root属性和alias属性的作用非常相似,都是重新定义文件路径,例如location属性中root/alias属性定义的文件路径将会覆盖server属性中定义的文件路径。
那么,二者的差别在哪里呢?假设这里将alias改为root,那么,Nginx将被引导至location>root属性定义的/mnt/volume/site目录寻找文件,同样的链接:
http://www.dancen.com/src/file.jpg
其对应的文件为:
/mnt/volume/site/src/file.jpg

仔细对比可以看到,二者对应的文件不同了:
root属性:文件路径=root路径+location路径+url相对路径
alias属性:文件路径=alias路径+url相对路径

从字面上理解,root属性指定的文件路径是根目录,负责将链接引导至根目录,然后寻找由location属性值和url相对路径结合起来指定的文件。alias属性指定的是location属性值的别名,alias属性值会替代location属性值,负责将链接引导至别名目录,然后寻找由url相对路径指定的文件。

  1. http://www.dancen.com/service
    匹配location /service
    此时Nginx将链接转发至本机的8080端口,即Nginx作为代理服务器使用。
二. location的嵌套使用

正如上面的例子,location属性也可以定义在location属性中,从而实现location属性的嵌套使用。例如,第一层location用于请求链接的分类,第二层location则用于给不同类型的资源文件定义不同的过期时间,在某些使用场景下,这是非常有用的。

示例:

location /src {
		alias /mnt/volume/site/;
		
		location ~* .(htm|html)$ {
			expires 300s;	
		}
		
		location ~* .(jpg|jpeg|png|gif|svg|webp|bmp|ico)$ {
			expires 360d;
		}
	}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/323765.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号