Linux服务:Nginx服务重写功能
目录
一.重写功能
1.重写功能作用
2.rewrite指令
③.if指令
②.return指令
③.set指令
编辑 ④.break指令
3.rewrite标志
①.redirect标志
②.permanent标志
③.break标志
④.last标志
⑤.rewrite标志实验
一.重写功能
1.重写功能作用
重写功能(rewrite)用于实现URL的重写,URL的重写是非常有用的功能,比如它可以在我们改变网站结构之后,不需要客户端修改原来的书签,也无需其他网站修改我们的链接,就可以设置为访问,另外还可以在一定程度上提高网站的安全性。
2.rewrite指令
③.if指令
用于条件匹配判断,并根据条件判断结果选择不同的Nginx配置,可以配置在server或location块中进行配置,Nginx的if语法仅能使用if做单次判断可以在server模块和location模块,不支持使用if else或者if elif这样的多重判断,用法如下:
if ( [连接符] 条件匹配 ){
执行动作;
}
条件匹配连接符:
- = :比较变量和字符串是否相等,相等为true。
- != :比较变量和字符串是否不相等,不相等为true。
- ~ :区分大小写,判断字符是否匹配,匹配为true。
- ~* :不区分大小写,判断字符是否匹配,匹配为true。
- -f 和 !-f :#判断请求的文件是否存在和是否不存在。
- -d 和 !-d :#判断请求的目录是否存在和是否不存在。
- -x 和 !-x :#判断文件是否可执行和是否不可执行。
- -e 和 !-e :#判断请求的文件或目录是否存在和是否不存在(包括文件,目录,软链接) 。
②.return指令
return用于完成对请求的处理,并直接向客户端返回响应状态码,比如:可以指定重定向URL(对于特殊重定向状态码,301/302等) 或者是指定提示文本内容(对于特殊状态码403/500等),处于此指令后的所有配置都将不被执行,return可以在server、if 和 location块进行配置。
使用格式:
- return code :返回状态码
- return code [text]:返回状态码可以选择性加一个文本
- return code url :返回某个状态码直接跳转到某个url
③.set指令
设置变量,例如set $name kgc 设置name变量值为kgc。
④.break指令
只跳出 rewrite中的(if , set ,return)指令,其他不跳出,如server模块内的不跳出。
3.rewrite标志
格式: rewrite 客户输入的(可用原始url正则表示) 你想让客户访问的 (可用url正则表示) 标志(即动作)
- . :表示任意字符
- \d :表示匹配数字
- * :表示任意长度字符包括0次
- .* :表示任意长度字符不包括0次
①.redirect标志
redirect 等于302即临时重定向,不会在浏览器中缓存。
②.permanent标志
permanent 等于301即永久重定向,会在浏览器中缓存。
③.break标志
break标志会重定向,但是不会显示跳转后的域名,只显示用户输入的域名。
④.last标志
last标志,重写完成后,停止对当前URI在当前location中后续的其它重写操作,而后对新的URL启动新一轮重写检查,不建议在location中使用。
⑤.rewrite标志实验
1、首先在主配置文件中创建2个虚拟主机,www.bj.com和www.beijing.com并且使用rewrite指令使得访问www.bj.com时跳转到www.beijing.com。
2、创建虚拟主机1和虚拟主机2的根目录并在虚拟主机1即www.bj.com的index.html中写入内容“this is bj”在虚拟主机2的根目录即www.beijing.com的index.html中写入内容“this is bj jump beijing”
3、使用另外一台机器在/etc/hosts中添加本机ip对应www.bj.com和www.beijing.com。然后使用curl访问查看是否为302永久重定向提示,然后使用curl 域名 -L,查看跳转后的网页内容。