nginx的rewrite
nginx服务的rewrite
nginx后端服务的指令
1)upstream指令 :设置后端服务器组的主要指令
Upstream name {}
2)server指令:用于设定组内的服务器
3)Ip_hash指令:
该指令用于实现会话保持功能,将某个客户端段请求多次重定向到组内同一台服务器上,保证客户端与服务器之间建立稳定的会话,只有当该服务器处于无效的时候,客户端的请求才会被下一个服务器接收
例子:
upstream backend {
ip_hash
server server1.example.com
server server2.example.com
}
rewrite重写
Rewrite 主要的功能就是实现URL的重写,Nginx的Rewrite规则采用Pcre,perl兼容正则表达式的语法规则匹配,如果需要Nginx的Rewrite功能,在编译Nginx之前,需要编译安装PCRE库。
通过Rewrite规则,可以实现规范的URL、根据变量来做URL转向及选择配置。
1)地址转发和地址重写
地址转发后,客户端浏览器的地址显示是不变的,而地址重写后客户端浏览器地址栏的地址会转变为服务器确定的位置;
在一次地址转发的过程中,只产生一次网络请求,而地址转写的过程中一般会产生两次请求;
2)rewrire指令
该指令通过正则表达式的使用用来改变URI。可以同时存在一个或者多个指令,按顺序依次对URL进行匹配和处理
例子: rewrite myweb,com http://neweb.com/premanent
3)rewrite的使用
域名跳转
例1:
server
{
listen 80;
server_name jump.myweb.com
rewrite ^/ http://jump.myweb.info/;
}
客户端访问http://jump.myweb.name时URL将被nginx服务器重写为http://jump.myweb.info/,客户端得到的数据实际上也是有http://jump:myweb.info相应的
例2)
server {
listen 80
server_name jump.myweb.com jump.myweb.info;
if ($host ~ myweb\.info) ##正则表达式中的.要用\转义
{
rewrite ^(.*) http://jump.myweb.name$1 permanent;#多级域名跳转
}
客户端访问http://jump.myweb.info/reqsoure的时候。URL被重写为http://jump.myweb.name/reqsource,客户端的数据实际上由http://jump.myweb.name响应的。
例3)
server {
listen 80
server_name jump1.myweb.com
if ($http_host ~* ^(.*)\.myweb\.name$)
{
rewrite ^(.*) http://jump.myweb.name$1
break
}
}
客户端访问http://jump.myweb.name/reqsource时,URL将被重写http:/jump.myweb.name/reqsource,实现了三级域名跳转