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

相关推荐
yt948322 小时前
Docker-基础(数据卷、自定义镜像、Compose)
运维·docker·容器
水银嘻嘻4 小时前
web 自动化之 KDT 关键字驱动详解
运维·自动化
Vone_664 小时前
node.js 邮箱验证服务器搭建
运维·服务器·node.js
丢丢丢丢丢丢~5 小时前
apache2的默认html修改
linux·运维·服务器
wusam5 小时前
Linux系统管理与编程20:Apache
linux·运维·服务器·apache·shell编程
ChironW5 小时前
Ubuntu 24.04 LTS系统上配置国内时间同步
linux·运维·服务器·ubuntu
TPBoreas6 小时前
排查服务器内存空间预警思路
运维·服务器
*郑*6 小时前
nginx配置反向代理后端
运维·nginx
Web极客码8 小时前
虚拟主机与独立服务器:哪个更好?
运维·服务器·虚拟主机
小突突突8 小时前
个人博客系统测试报告
运维·网络·功能测试