nginx的重定向(rewrite)

nginx的重定向(rewrite)
location 匹配
location匹配的就是后面的URI
/wordpress
192.168.11.137/wordpress
location匹配的分类和优先级
1、精确匹配:

location = /   对字符串进行完全匹配,必须完全符合

2、正则匹配:

^~ 前缀匹配,以什么为开头
~  区分大小写的匹配
~* 不区分大小写
!~  区分大小写的取反
!~* 不区分大小写的取反

3、一般匹配

location /字符串

精确匹配的优先级最高,正则,一般。

优先级总结:
location = 完整路径 > location ^ > location*=location > location /部分起始位置 > location /
实际网站中的使用规则

网页的首页
     location = / {
     root html;
     index index.html index.htm  index.php;
}
第二个必选规则:处理静态请求的页面
location ^~ /static/ {
root /web/static/;
index index.html index,htm;
 }
用来匹配静态页面
location ~*\.(jpg.gif|png|jpeg|css)${
root /web/picturs/;
index index.html index.htm;
}
访问图片或者是指定的后缀名
第三个规则,一般是通用规则,用来转发 .php .js为后缀的动态请求到后端服务器(数据库)
location / {
proxy_pass

}
转发后端请求和负载均衡

rewrite重定向:
rewrite就是把当前访问的页面跳转到其他页面。
rewrite的工作方式:通过nginx的全局变量或者自定义变量,结合正则表达式和标志位实现URL的重定向
nginx的变量
$uri 客户端请求的uri地址
$host:请求的主机名
$http_user_agent:客户端请求的浏览器和操作系统
$http_referer:请求头referer信息,表示当前页面来源的url
$remote_addr:客户端的ip地址
$remote_port:客户端的端口号
$server_addr:服务端的ip地址
$serve_port:服务端的端口号
$request_method:获取客户端请求的方法
$scheme:请求的协议,要么是http,要么是https
x_forwarded_for:用来获取请求头当中客户端的真实ip地址。代理服务器添加,在代理服务器当中指示客户端ip地址
X-Real-IP:客户端真实ip地址。
nginx.conf
proxy_set_header X-Real-IP $remote_addr 加上这一字段,客户端的真实ip地址会传递给后端服务器

在这里插入图片描述

标志位:
flag

permanent:永久重定向,返回码301,浏览器地址栏会显示跳转后的URL地址
redirect:临时重定向,返回码302,浏览器的地址会显示跳转后的URL地址
break:永久重定向,返回码301,但是匹配到规则后不会再向下匹配其他规则,URL不发生改变
last:重定向,但是会继续向下匹配,匹配其他的location规则。

rewrite的执行顺序:
1、server模块的rewrite的优先级最高
2、匹配location的规则
3、执行选定的location规则。

在这里插入图片描述

rewrite的语法:
rewrite 正则表达式 跳转后的内容 标志位;

rewrite or internal redirection cycle while processing?
在重定向的过程中,使用了last方式进行重定向,但是,没有结束语,陷入了死循环,nginx会自动循环10次,超过10次没有结束,就会停止,然后报错500

基于目录下所有 php 结尾的文件跳转
vim /usr/local/nginx/conf/nginx.conf
server {
	listen       80;
	server_name  www.test.com;		#域名修改	
	charset utf-8;
	access_log  /var/log/nginx/www.test.com-access.log;
	
	location ~* /upload/.*\.php$ {
        rewrite (.+) http://www.test.com permanent;
    }
 
	location / {
        root   html;
        index  index.html index.htm;
    }
}
systemctl restart nginx

访问http://www.test.com/upload/123.php,直接跳转到www.test.com
index  index.html index.htm;
}

}
systemctl restart nginx

访问http://www.test.com/upload/123.php,直接跳转到www.test.com


location匹配的优先 location = location ~ ~* location / 重定向 permanent redriect break last 500报错 10次
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

代码要你命

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值