nginx—rewrite功能

embedded/2024/12/26 0:02:08/

目录

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.ppmy.cn/embedded/148744.html

相关文章

日志和MVCC的详解

日志详解 日志的重要性和用途 日志在数据库系统中扮演着至关重要的角色&#xff0c;它是数据库活动的详细记录。从故障恢复的角度来看&#xff0c;数据库系统在运行过程中可能会遇到各种意外情况&#xff0c;如硬件故障、软件错误、电源中断等。当这些情况发生时&#xff0c;数…

企业台账系统|Java|SSM|VUE| 前后端分离

【技术栈】 1⃣️&#xff1a;架构: B/S、MVC 2⃣️&#xff1a;系统环境&#xff1a;Windowsh/Mac 3⃣️&#xff1a;开发环境&#xff1a;IDEA、JDK1.8、Maven、Mysql5.7 4⃣️&#xff1a;技术栈&#xff1a;Java、Mysql、SSM、Mybatis-Plus、VUE、jquery,html 5⃣️数据库可…

gitee别人仓库再上传自己仓库

一、新建一个自己的Git仓库 如果没有注册账号的朋友&#xff0c;可以先去注册一个Gitee的账号&#xff0c;用于管理自己的代码特别好用&#xff01;&#xff01;&#xff01; 接下来就是在gitee上新建一个自己的仓库&#xff0c;如下图所示 二、右建 Git Bush Here删除.git文件…

Python中流行的RPC(Remote Procedure Call,远程过程调用)框架主要有以下几个:

Python中流行的RPC&#xff08;Remote Procedure Call&#xff0c;远程过程调用&#xff09;框架主要有以下几个&#xff1a; gRPC&#xff1a; 开发背景&#xff1a;由Google开发的高性能、开源和通用的RPC框架。协议支持&#xff1a;使用HTTP/2进行客户端-服务器通信&#xf…

Python推导式学习

Python推导式是一种简洁且高效的代码编写方式&#xff0c;可以在一行代码中完成常见的循环和集合操作。Python推导式包括列表推导式、字典推导式、集合推导式和生成器推导式。 列表推导式&#xff1a;可以根据一个已有的列表生成一个新的列表。 例如&#xff1a;new_list [x*…

重温设计模式--享元模式

文章目录 享元模式&#xff08;Flyweight Pattern&#xff09;概述享元模式的结构C 代码示例1应用场景C示例代码2 享元模式&#xff08;Flyweight Pattern&#xff09;概述 定义&#xff1a; 运用共享技术有效地支持大量细粒度的对象。 享元模式是一种结构型设计模式&#xff0…

深入解析:Python中的决策树与随机森林

在这个数据驱动的时代&#xff0c;机器学习技术已经成为许多企业和研究机构不可或缺的一部分。其中&#xff0c;决策树和随机森林作为两种强大的算法&#xff0c;在分类和回归任务中表现尤为出色。本文将带领大家深入了解这两种算法在Python中的实现&#xff0c;从基础到实战&a…

远程控制macOS一直卡在100%,能连接上了却只显示了壁纸?

前言 前段时间有个朋友过来咨询关于Windows使用第三方远程软件&#xff08;向日葵、Todesk等&#xff09;远程连接控制macOS系统&#xff0c;但出现了一些奇奇怪怪的问题。 比如在连接的时候&#xff0c;一直卡在100%连接&#xff0c;对方的电脑却已经显示已经被控制的状态。…