示例1:
目的:
目录的表达方式发生变化。原先的“-”分割,变成了“/"目录层次。
将
http://www.qianfeng.com/qf/11-22-33/1.html
转换为
http://www.qianfeng.com/qf/11/22/33/1.html
1.注释掉上一个实验中的重定向部分。
2.准备目标目录
mkdir /usr/share/nginx/html/qf/11/22/33/ -p
准备目标页面
echo ‘/usr/share/nginx/html/qf/11/22/33/1.html’ > /usr/share/nginx/html/qf/11/22/33/1.html
3.配置地址重写
location /qf {
rewrite ^/qf/([0-9]+)-([0-9]+)-([0-9]+)(.*)$ /qf/$1/$2/$3$4 permanent;
root /usr/share/nginx/html;
}
4.访问页面进行测试
http://qianfeng.com/qf/11-22-33/1.html
示例2:
目的:
引用原URL当中的信息,重定向至目标的URL
#http://cyx.qianfeng.com ==> http://www.qianfeng.com/cyx
#http://cheng.qianfeng.com ==> http://www.qianfeng.com/cheng
if ($host ~* "^www.qianfeng.com$" ) {
break;
}
if ($host ~* "^(.*)\.qianfeng\.com$" ) {
set $user $1;
rewrite .* http://www.qianfeng.com/$user permanent;
}
这里break是为了跳出循环。
如不加break。
每一次重写后,主机名都符合if的判断结果,会再次被重写。
set 指令是用于定义一个变量,并且赋值。应用于server,location,if环境。
1.注释掉上一个实验中的重定向部分。
2.配置地址重写
准备目标页面
mkdir /usr/share/nginx/html/{cyx,cheng}
echo "cyx" > /usr/share/nginx/html/cyx/index.html
echo "cheng" > /usr/share/nginx/html/cheng/index.html
准备客户端DNS记录
192.168.152.157 cyx.qianfeng.com cheng.qianfeng.com www.qianfeng.com
if ($host ~* "^www.qianfeng.com$" ) {
break;
}
if ($host ~* "^(.*)\.qianfeng\.com$" ) {
set $user $1;
rewrite .* http://www.qianfeng.com/$user permanent;
}
这里break是为了跳出循环。
如不加break。
每一次重写后,主机名都符合if的判断结果,会再次被重写。
3.访问页面进行测试
cyx.qianfeng.com
cheng.qianfeng.com
示例3:
目的:
如果访问服务器中的特殊文件。如:.sh结尾的文件。则返回403操作拒绝错误
重写
location ~* \.sh$ {
return 403;
#return 301 http://www.qianfeng.com;
}
示例4:
目的:last标记
1.准备三个页面
mkdir /usr/share/nginx/html/test
echo 'break' > /usr/share/nginx/html/test/break.html
echo 'last' > /usr/share/nginx/html/test/last.html
echo 'test' > /usr/share/nginx/html/test/test.html
2.邀请break,last标记
vim /etc/nginx/conf.d/default.conf
server {
listen 80;
location / {
root /usr/share/nginx/html;
index index.html index.php;
}
location /break {
rewrite .* /test/break.html break;
root /usr/share/nginx/html;
}
location /last {
rewrite .* /test/last.html last;
root /usr/share/nginx/html;
}
location /test {
rewrite .* /test/test.html break;
root /usr/share/nginx/html;
}
3.验证,理解last
http://192.168.152.157/break
http://192.168.152.157/last
http://192.168.152.157/test