本篇文章只讲root和alias的区别,配置文件详解请参考 Nginx(三) 配置文件详解,下面开始进行测试。
Nginx配置如下:
- server {
- listen 8688 default_server;
- server_name www.read******.cn;
- access_log logs/access.log format2;
- root pages;
-
- set $sn 1;
-
- # 测试1
- location ^~ /test1/ {
- root pages/one/;
- }
- # 测试2
- location ^~ /test2/ {
- alias pages/one/;
- }
- # 测试3
- location ^~ /test3/page {
- alias pages/one/;
- }
- # 测试4
- location ^~ /test4/page/ {
- alias pages/one/;
- }
-
- location = /favicon.ico {
- log_not_found off;
- access_log off;
- }
- location / {
- index index.html index.htm;
- }
- }
请求地址 | host:8688/test1/one.html |
location uri | /test1/ |
请求结果 | 404 |
error.log 日志输出 | *920 open() "/usr/local/nginx/pages/one/test1/one.html" failed (2: No such file or directory) |
文件路径 | host:8688/usr/local/nginx/pages/one/test1/one.html |
请求地址 | host:8688/test2/one.html |
location uri | /test2/ |
请求结果 | 200 |
error.log 日志输出 | |
文件路径 | host:8688/usr/local/nginx/pages/one/one.html |
请求地址 | host:8688/test3/page/two/one.html |
location uri | /test3/page |
请求结果 | 404 |
error.log 日志输出 | *924 open() "/usr/local/nginx/pages/one//two/one.html" failed (2: No such file or directory) |
文件路径 | host:8688/usr/local/nginx/pages/one//two/one.html |
请求地址 | host:8688/test4/page/two/one.html |
location uri | /test4/page/ |
请求结果 | 404 |
error.log 日志输出 | *932 open() "/usr/local/nginx/pages/one/two/one.html" failed (2: No such file or directory) |
文件路径 | host:8688/usr/local/nginx/pages/one/two/one.html |
对比测试1和测试2,可以得出的结论:
①使用root指令时,请求URI部分不会改变,最终文件访问路径是 root path + 完整请求URI;
②使用alias指令时,请求URI部分内容会被alias path替换掉。
通过测试2、3、4,可以得出的结论:
使用alias指令时,请求URI与location uri匹配的部分会被alias path替换掉。