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 + 正则表达式 + 跳转后的内容 + 标志位 ;

相关推荐
Decay__2 小时前
05_MySQL 常用 SQL 大全 —— 诊断、管理、优化辅助 SQL 与三大系统库速查
运维·数据库·sql·mysql·架构
贞明电子4 小时前
工业三色报警灯怎么接入项目系统?开关量与RS485控制应用指南
运维·网络·微信公众平台·贞明电子
万联WANFLOW4 小时前
海外网络故障怎么排查?Cloudflare 三季度断网报告解读与 mtr 实战
运维·网络·故障分析
Ruiery6 小时前
Linux 6.6内核内存管理深度解析(十三):slab/slub 分配器
linux·运维·服务器
Decay__8 小时前
04_MySQL DBA 日常运维手册 —— 会话管理、锁与阻塞、事务监控、慢查询与日志巡检
运维·数据库·sql·mysql·架构
江华森9 小时前
数据中心基础设施运维实战:概述与实验环境搭建
运维
迪菲赫尔曼9 小时前
【基础篇 11】把官方源码放到服务器:版本、解压层级和安装位置,一次弄清楚
运维·服务器·开发语言·人工智能·python·yolo·目标检测
by2099910 小时前
Linux GCC/G++ 编译与 Makefile 构建
linux·运维·服务器·经验分享
螺丝钉tina11 小时前
[Playwright][08] Upload 模块自动化:如何设计真实业务测试用例?
运维·自动化·测试用例
迪菲赫尔曼11 小时前
【基础篇 12】把环境与源码接起来:检查 GPU,再安装服务器上的项目
运维·服务器·开发语言·人工智能·python·yolo·目标检测