Fork me on GitHub

nginx ----location、alias 、index

  location [ = | ~ | ~* | ^~ ] uri { ... }
  location @name { ... }
在一个server中location配置段可存在多个,用于实现从uri到文件系统的路径映射;ngnix会根据用户请求的URI来检查定义的所有location,并找出一个最佳匹配,而后应用其配置

  定制访问路径:

 root /data/site1;

  一、修改配置文件

server {
        server_name     www.a.net ;
          root /data/site1;
        location /test {
          root /opt/testdir;
    }
}

默认访问的路径是:/data/下的site1文件夹

当访问/test 的时候,访问的是opt下的testdir 这个文件夹下的test文件

  二、创建对应的文件夹

mkdir /opt/testdir/test -pv

 echo /opt/testdir/test/index.html > /opt/testdir/test/index.html

  三、测试访问

1 curl www.a.net/test/
2 /opt/testdir/test/index.html

  =   对URI做精确匹配;
    location = / {
      ...
  }
    http://www.magedu.com/ 匹配
    http://www.magedu.com/index.html 不匹配
  ^~   对URI的最左边部分做匹配检查,不区分字符大小写
  ~   对URI做正则表达式模式匹配,区分字符大小写
  ~*   对URI做正则表达式模式匹配,不区分字符大小写
  不带符号 匹配起始于此uri的所有的uri
  \   转义符,可将 . * ?等转义为普通符号
  匹配优先级从高到低:
    =, ^~, ~/~*, 不带符号


 

alias 别名 嵌套在location中

  1、查看location配置

server {
        server_name     www.a.net ;
            root /data/site1;
        location /test {
            root /opt/testdir;
    }
        location /about {
                root /opt/testdir;
    }
}

  2、测试访问

1 curl 192.168.1.5/about/
2 /opt/testdir/about/index.html

root访问的是192.168.1.5/opt/testdir/about/index.html会在testdir下面补一个about路径

  3、修改为alias

server {
        server_name     www.a.net ;
        root /data/site1;
        location /test {
        root /opt/testdir;
    }
        location /about {
                alias /opt/testdir;
    }
}

  4、测试访问

1 curl 192.168.1.5/about/
2 /opt/testdir/index.html

alias是当访问192.168.1.5下的about文件,实际访问的是/opt/testdir/下的index.html

  location /test 后不要加斜线,千万不要写成location /test/否则会出现很多问题!!!
使用alias的时候,url后面如果加了斜杠,则下面的路径必须也加斜杠,否则403
演示:

1、都不加斜杠,正常访问
curl 192.168.1.5/about/
/opt/testdir/index.html

2、uri后面添加了斜杠,但路径没加


server {
        server_name     www.a.net ;
        root /data/site1;
        location /test {
        root /opt/testdir;
    }
        location /about/ {
                alias /opt/testdir;
    }
}
测试访问
curl 192.168.1.5/about/
<html>
<head><title>403 Forbidden</title></head>
<body>
<center><h1>403 Forbidden</h1></center>
<hr><center>nginx/1.20.1</center>
</body>
</html>

3、url加了斜杠,路径也加了斜杠

server {
        server_name     www.a.net ;
        root /data/site1;
        location /test {
        root /opt/testdir;
    }
        location /about/ {
                alias /opt/testdir/;
    }
}

测试访问,一切正常

curl 192.168.1.5/about/
/opt/testdir/index.html

index file ...;
指定默认网页文件,此指令由ngx_http_index_module模块提供

指定test.index 才是主页 

1、指定当访问www.a.net的about的时候访问的是/opt下的testdir下的test.html页面

server {
        server_name www.a.net;
        root /data/site1;
        location /about {
                root /opt/testdir/;
                index test.html;
        }
        error_page 404 /404.html;
        location = /404.html {
        }
}
~            
2、新建测试页面
echo /opt/testdir/about/test.html > /opt/testdir/about/test.html 

3、测试访问,加-L

curl www.a.net/about -L
/opt/testdir/about/test.html

-L 跟踪重定向,否则通过curl命令只能看到重定向页面


 

posted @ 2021-05-28 17:51  Alex-Lzy  阅读(2085)  评论(0编辑  收藏  举报