nginx的重定向rewrite

nginx的重定向(rewrite)

location匹配

location匹配的就是后面的URI

location匹配的分类和优先级*

1、精确匹配 location=/ 对字符串进行完全匹配,必须完全符合,后面内容要写全

2、正则匹配 ^~ 以 xxx为开头

~区分大小写的匹配

~*不区分大小写

!~ :区分大小写取反

!~* 不区分大小写取反

3、一般匹配

location / 字符串

优先级: 精确匹配 > 正则 > 一般 和顺序无关

location=/ > location ^~ > location /

总结:

1.location = 完整路径 (1.jpg 不能是1 或 1. 1.j 要写全)

2.location ^~

3.location ~ 并列 location~*

4.location / 部分起始位置(有字符串)

5.location / (/后面什么都没有)

实际网站中使用的规则

怎么分配选择location匹配

第一

location = / {

​ root html;

​ index index.html index.htm

}

网站的首页

第二个必选规则 处理静态请求页面

location ^~ /static/ {

​ root /web/static/;

index index.html index.htm;

}

匹配静态页面

location ~* \ .(jpg|gif|png|jpeg|css)${

root /web/pictures/;

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地址

$server_port:服务端的端口号

$request_method:获取客户端请求的方法

$scheme:请求的协议,要么是http 要么是https

x_forwarded_for:用来获取请求头当中客户端的真实ip地址。代理服务器添加,在代理服务器中指示客户端的ip地址。

X-Real-IP 客户端真实的ip地址

标志位:

permanent:永久重定向,返回码是301,浏览器地址栏会显示跳转后的url地址

redirect 临时重定向 返回码 302 浏览器地址栏会显示跳转后的url地址

break 永久重定向,返回码301 ,但 匹配到规则后不会再向下匹配其他规则,url也不会变化

last 重定向 但会继续向下匹配其他的location规则

rewrite执行顺序:

1.server模块的rewrite优先级最高

2.匹配location的规则

3.执行选定的location规则

rewrite语法

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

相关推荐
z202305089 分钟前
linux之 remoteproc 内核实现源码分析
linux·运维·服务器
阿方索22 分钟前
shell脚本
linux·运维
嗨丶王哪跑33 分钟前
网络安全审计技术原理与应用
运维·网络·安全·web安全
斯普信专业组33 分钟前
Skywalking从部署集成到动态调优(上)
运维·skywalking·动态调优
斯普信专业组35 分钟前
Skywalking从部署集成到动态调优(下)
运维·skywalking·动态调优
zrande1 小时前
Nginx 负载均衡通用方案
nginx·负载均衡
卓小帅的博客2 小时前
跨服务器快速传输数据
运维·服务器
朝阳5812 小时前
nuxt2 发布到线上
运维·服务器
芒果作者2 小时前
cursor注册无需手机号
运维·服务器·ai·cursor