7.4nginx的重定向(rewrite)

nginx的重定向(rewrite)

location 匹配

location 匹配的就是后面的UR

/woedpress

192.168.183.110/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 |jpg|css|php)${

root /web/picturs/;

index index.html index.htm;

}

访问图片或者指定的后缀名

第三个规则,一般是通用规则,用来转发.php.js为后缀的动态请求到后端服务器(数据库)

location /{

proxy_pass

}

用来转发后端请求和负载均衡

rewrite 重定向:

rewrite就是把当前访问的页面跳转到其他页面

rewrite的工作方式:通过nginx的全局变量或者自定义变量,结合正则表达式和标志位实现url的重定向

nginx的变量

$uri 客户端请求的url地址

$host 请求的主机名

$http_user_agent 客户端请求的浏览器和操作系统

$http_referer 请求头的referer信息 表示当前页面来源的url

$remote_addr 客户端的ip地址

$remote_port 客户端的端口号

$server_addr 服务端的ip地址

$server_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次,last匹配最多只能执行10次,超过10次没有结束,就会停止,报错500

基于域名进行跳转,老的不用了换新的但是依然能够访问,统统跳转到新的域名

![外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传](https://img-home.csdnimg.cn/images/20230724024159.png?origin_url=C%3A%5CUsers%5Chuyifan%5CAppData%5CRoaming%5CTypora%5Ctypora-user-images%5Cimage-20240704134729782.png&pos_id=img-OOehNPCP-172057971435

基于客户端的ip进行跳转 公司有新业务上线,测试阶段,其他的IP只能显示维护中,只有192.168.183可以访问

在这里插入图片描述

总结

1、location匹配优先级

精确=

正则~

一般/

2、重定向

permanent永久重定向

rediect临时重定向

break 不改变URL

last 会陷入死循环

500报错 10次以上不中止

基于目录下所有 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
w.test.com permanent;
}

location / {
    root   html;
    index  index.html index.htm;
}

}
systemctl restart nginx

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值