当前位置: 首页 > news >正文

nginx—rewrite功能

目录

Rewrite相关指令

set指令

if指令

①布尔值

​编辑

②相等

​编辑

③正则匹配

④判断文件

⑤其他

break指令

​编辑

return指令

rewrite指令

rewrite_log指令

Rewrite应用场景

域名跳转

​编辑

独立域名


Rewrite相关指令

rewrite指令是用于基于正则表达式修改请求的URI(统一资源标识符)的强大工具。它允许你根据请求的URI、请求参数或其他条件来重定向用户到不同的页面或路径。rewrite 指令通常用于URL重写、伪静态化、实现友好的URL结构等场景。

set指令

设置变量

set指令表
语法set $variable  value;
默认值--
位置server块,location块,if块
location /111 {set $name monkey;default_type text/plain;return 200 $name;}

if指令

支持条件判断,根据不同结果选择不同的nginx配置

if指令表
语法if (condition) {...}
默认值--
位置server块,location块
①布尔值

对应的值为空字符或者0,if判断为false,其他条件为true

例如:

    location /if {set $monkey  10 ;if ($monkey) {return 200  "monkey is not null";}
②相等

使用=和!=来进行条件判断

例如:

    location /ifi {if ($request_method = POST) {return  200 "this is POST" ;}return 200 "this is ifi";}
③正则匹配

使用正则表达式进行匹配

例如:

if  ($http_user_agent  ~  Safari) {#需要进行的操作}
④判断文件

判断文件是否存在

例如:

if  ($request_filename) {#要进行的操作
}
⑤其他

-d   !-d  判断请求的目录是否存在

-e !-e 判断请求的目录文件是否在使用

-x !-x 判断文件是否可执行 

break指令

中断当前相同作用域中的配置,终止当前匹配并把当前的URI在location中进行重定向访问

    location /break {set $username Tom;if ($args) {set $username JeEEy;break;set $usernaem ROSE;}add_header username $username;return 200 $username;}

return指令

完成对请求的处理

return指令表
语法return code[text] ; return code URL ; return URL;
默认值---
位置server块,location块,if块

rewrite指令

通过正则表达式来改变URL,可以存在一个或者多个指令,按顺序对URL进行匹配和处理

rewrite指令表
语法rewrite regex replacement[flag];
默认值--
位置server块,location块,if块
    location /rewrite {rewrite ^/rewrite/url\w*$  https://www.baidu.com;rewrite ^/rewrite/(test)\w*$  /$1;rewrite ^/rewrite/(demo)\w*$  /$1;
}location /test {return 200 "this is test";
}location /demo {return 200 "this is demo";
}

flag选项
flag选项表
选项含义
last停止处理后续的 rewrite 指令,并重新搜索匹配的 location 块
break停止处理后续的 rewrite 指令,但不再重新搜索匹配的 location 块

redirect

返回 302 临时重定向,而不是直接修改请求的 URI
permanent返回 301 永久重定向,而不是直接修改请求的 URI

rewrite_log指令

是否打开URL重写日志输出功能

rewrite_log指令表
语法rewrite_log on|off;
默认值off
位置http块,server块,location块,if块
    rewrite_log on;error_log /var/log/nginx/error.log notice;

Rewrite应用场景

域名跳转

为主机准备三个域名:

192.168.188.10  www.apple.com
192.168.188.10  w.apple.com
192.168.188.10  ww.apple.com

修改配置文件:

server {listen       801;server_name  www.apple.com;location / {default_type text/html;return 200 "<h1>This is www.apple.com</h1>";}error_page   500 502 503 504  /50x.html;location = /50x.html {root   /usr/share/nginx/html;}
}
#设置域名跳转
server {listen      801;server_name www.monkey.com www.orange.com ;rewrite ^/(.*)  http://www.apple.com$1 ;}

独立域名

使用不同目录来实现下面不同功能

http://search.monkey.com  商品搜索模块

http://item.monkey.com   商品详情模块

http://cart.monkey.com   商品购物车模块

配置
 

#商品搜索模块
server {listen       81;server_name  search.monkey.com;rewrite ^(.*) http://www.monkey.com$1;
}
#商品详情模块
server {listen      82;server_name  item.monkey.com  ;rewrite ^/(.*)  http://www.monkey.com$1 ;}
#商品购物车模块
server {listen      83;server_name cart.monkey.com  ;rewrite ^/(.*)  http://www.monkey.com$1 ;
}
#资源模块
server {listen 80;server_name www.monkey.com ;default_type text/plain;location /search {return 200 "this is search module";}location /item  {return 200 "this is item module";
}location /cart {return 200 "this is cart module";
}
}


http://www.mrgr.cn/news/81213.html

相关文章:

  • Unity中如何实现绘制Sin函数图像
  • MySQL超详细安装配置教程(亲测有效)
  • 网安瞭望台第17期:Rockstar 2FA 故障催生 FlowerStorm 钓鱼即服务扩张现象剖析
  • 如何从 0 到 1 ,打造全新一代分布式数据架构
  • 代理模式(JDK,CGLIB动态代理,AOP切面编程)
  • 基于DockerCompose搭建Redis主从哨兵模式
  • NS3学习——队列管理机制
  • 题解 洛谷 Luogu P1135 奇怪的电梯 广度优先搜索 BFS C/C++
  • Debian环境安装Docker Engine
  • 重温设计模式--迭代器模式
  • redis 缓存使用
  • 使用GPT进行SCI论文润色常用语句
  • 重温设计模式--模板方法模式
  • vue前端实现同步发送请求,可设置并发数量【已封装】
  • 重温设计模式--外观模式
  • 网络编程(王铭东老师)笔记
  • 重温设计模式--适配器模式
  • 重温设计模式--设计模式七大原则
  • 解决 Curl 自签名证书验证失败的实用指南
  • 常见数据结构
  • Krita安装krita-ai-diffusion工具搭建comfyui报错没有ComfyUI_IPAdapter_plus解决办法
  • 设计一个监控摄像头物联网IOT(webRTC、音视频、文件存储)
  • Python(二)str、list、tuple、dict、set
  • 直流有刷电机多环控制(PID闭环死区和积分分离)
  • leetcode 704. 二分查找
  • 【星海随笔】高级系统编辑