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命令只能看到重定向页面