一、语法说明
-
alias
-
采用
alias配置的资源目录必须是准确的。localtion正则匹配到path后,直接在alias定义的目录下查找。 -
采用
alias标签配置资源路径的localtion块中不能使用rewrite的break。 -
采用
alias标签配置的资源目录后面必须要加上/符号。
-
-
root
-
采用
root配置资源目录,实际资源目录必须设置为localtion正则匹配的path关键字的上一级目录。 -
这个
path正则匹配的关键字也必须是root后面定义路径中真实存在的资源目录,因为localtion正则匹配到path后,根据root再带上path本身资源路径名称去查找资源。
-
P.S
-
采用
alias配置的资源目录,localtion正则匹配的path关键字后面不带/符号,那么请求访问这个path的url地址中带不带/都不会影响访问,因为此机制在访问的时候,Nginx会自动加上/ -
采用
alias配置的资源目录,localtion正则匹配的path关键字后面带上/符号,那么请求访问这个path的url地址中必须带上/,因为此机制Nginx不会自动加上/,如果不手动加上/,那么在访问的时候就会出现404,所以建议localtion正则匹配的path关键字后面不带/符号,要求alias标签配置的资源目录后面必须要加上/符号 -
采用
root配置的资源目录,localtion正则匹配的path后面带不带/都不会影响访问
二、试验论证
-
前置约定
假设
Nginx配置的域名为www.rambo123.com -
资源目录文件夹的名称和
path一致示例一
location /shop/ { alias /opt/web/shop/; index index.html index.htm; }以上通过
alias配置资源目录,访问www.rambo123.com/shop/index.html实际指定的是/opt/web/shop/index.htmlP.S
alias指定的资源目录后面必须要加上/,否则无法访问示例二
采用
root改造示例一localtion /shop/ { root /opt/web/; index index.html index.htm; }以上通过
root改造示例一的配置以后,达到的访问效果一致。通过root配置资源目录,访问www.rambo123.com/shop/index.html实际指定的是/opt/web/shop/index.html -
资源目录文件夹的名称和
path不一致示例三
localtion /web/ { alias /opt/www/html/; index index.html index.htm; }以上通过
alias配置资源目录,访问www.rambo123.com/web/index.html实际指定的是/opt/www/html/index.html示例四
采用
root改造示例三如果非要采用
root指定资源的方式来改造示例三,就只能通过软连的方式来实现# 为 html 创建软链接(保持 /opt/www/html 与 /opt/www/web 内容一致) ln -s /opt/www/web /opt/www/html # 在进行 root 的配置 lcation /web/ { root /opt/www/; index index.html index.htm; }
三、经验总结
-
在
localtion /中配置root目录 -
在
location /path中配置alias虚拟目录
该博客主要介绍了Nginx中alias和root配置资源目录的语法,如alias配置的资源目录要准确,root配置时实际资源目录的设置要求等。还通过多个示例进行试验论证,最后总结了在Nginx中配置目录和虚拟目录的经验。
764

被折叠的 条评论
为什么被折叠?



