nginx root、alias、location指令使用方法

时间:2023-03-08 17:55:10

一.nginx root指令

1. Nginx配置

相关配置如下图:

nginx root、alias、location指令使用方法

通过配置root目录到“/wwwroot/html/”位置

在用虚拟主机方法,主机名称是test,需要大家配置一下自己pc的host文件,另外需要配置server的nginx.conf文件,添加“include vhost/t.conf;”代码,注意不要携带中文的引号

2. 准备一些文件,文件列表如下

nginx root、alias、location指令使用方法

如上图,我们将/wwwroot/html目录下的“目录结构及文件”列了出来,一会我们会根据这个目录结构进行实验。

3. 正常访问页面,显示如下图

nginx root、alias、location指令使用方法

通过上图我们可以了解到访问/t/a.html成功, 也就是 这个“location /t/”配置及root配合是正常的

4. 访问非目录结构

nginx root、alias、location指令使用方法

如上图访问结果,我们无法访问c.html,为什么,其实问题不在root,在于“location /t/”,根据这个指令,我们必须在我们的url中包括“/t/”,否则无效,并且我们在虚拟的主机中没有其他配置了,因此无法访问c.html

5. Root的对比配置

nginx root、alias、location指令使用方法

图上图,我们配置root的目录到 “/wwwroot/html/t/”,然后重新加载nginx配置

nginx root、alias、location指令使用方法

访问a.html文件,这个文件在这个目录中是真实存在的,结果如下

nginx root、alias、location指令使用方法

上图结果由于有缓存存在,无法真正表明结果

通过特别参数来突破缓存进行测试,结果如下:

nginx root、alias、location指令使用方法

从上图看,已经没有缓存在影响,但是仍然没有找到页面

清理缓存后再次测试,结果如下

nginx root、alias、location指令使用方法

结果以上是上面的情况。

小结

nginx root、alias、location指令使用方法

图中最上面是nginx的 location的配置, 特别注意 “/t/”,我们的访问中必须携带这个信息,才能访问。

第二行是用户的访问

第三行是nginx的 root指令,特别注意绿色区域的“/”必须是一一对应的。

最下面是linux文件系统的目录及文件显示,当然目录是 /wwwroot/html/目录下的文件。

从上图我们可以了解到:location指令的第一个“/”同root指令的最后一个“/”是一一对应的,然后,root的指定的目录中,包括 location指定的相关目录结构,图中最后一部分显示的结构。

用户访问中,相应的“/”也必须同location中的“/”进行相关对应。图中应该对应的“/”都已经用相同颜色标识出来,请注意!

二.nginx alias别名配置

1. 更新配置文件

别名的相关配置如下图,文件系统不变。

nginx root、alias、location指令使用方法

重新加载配置

nginx root、alias、location指令使用方法

2. 未清理缓存情况下的访问

nginx root、alias、location指令使用方法

3. 采用参数法突破缓存的结果

nginx root、alias、location指令使用方法

4. 清理缓存后访问结果

nginx root、alias、location指令使用方法

5. 更改配置文件进行对比实验

nginx root、alias、location指令使用方法

重新加载配置文件

清理浏览器缓存然后访问如下

nginx root、alias、location指令使用方法

从图中发现我们已经访问不了

访问c.html

nginx root、alias、location指令使用方法

可以访问了。为什么???

小结

nginx root、alias、location指令使用方法

从上图中我们了解到,location中 黄色“/”要同 alias中“/”相对应。

然后是服务器中的目录结构了。

再有就是html访问中(同location的关系)的情况,同上面root的情况类似。

总结:

1. Location管理服务器及用户浏览器的访问, 主要是http请求中url中特定部分同location指令特定部分要对应,需要对应在两个小结的图中已经给出了!

2. Root及alias指令主要是目录对应关系同location不同

3. Root的最后一个“/”要同location的第一个“/”对应,其他目录结构同location中剩余相同

4. Alias的最后一个“/”要同location的最后一个“/”对应