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

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.kler.cn/a/451229.html

相关文章:

  • TGRS | 可变形傅里叶卷积用于遥感道路分割
  • 亚信安全举办“判大势 悟思想 强实践”主题党日活动
  • 系统压力测试助手——stress-ng
  • SpringCloud 入门(4)—— 网关
  • 餐饮业的数字化转型:JSP订餐管理系统的设计与开发
  • mysql,数据库数据备份
  • SQL中的约束
  • 数据库管理系统——NoSQL之文档数据库(MongoDB)
  • WEB UI 创建视图
  • 单片机:实现定时器中断(数码管读秒+LED闪烁)(附带源码)
  • 顶顶通呼叫中心中间件mod_cti模块安全增强,预防盗打风险(mod_cti基于FreeSWITCH)
  • CSS系列(26)-- 动画性能优化详解
  • SDK 指南
  • 【每日学点鸿蒙知识】启动耗时分析、IDE报错、emitter内存泄漏、radio C API、SDK下载失败
  • IDEA2024如何清理缓存和重启【最新教程】
  • vue+openlayers直接前端加载tif文件,不需要geoserver发布
  • Flutter 开关属性
  • React 前端框架简介
  • 医疗信息系统有哪些
  • Jenkins 持续集成部署
  • WPS中插入矩阵的方法
  • 专栏二十三:Python读取和分析空间数据的经验杂谈
  • D105【python 接口自动化学习】- pytest进阶参数化用法
  • 【linux】NFS实验
  • dns一般设置为多少
  • Windows安装无线打印机