首页 > 系统相关 >Nginx的rewrite指令

Nginx的rewrite指令

时间:2024-12-14 23:09:29浏览次数:7  
标签:请求 rewrite URI Nginx 指令 重写

Nginx的rewrite指令

rewrite​ 指令在Nginx中用于对请求的URI进行重写操作,通过正则表达式来匹配和替换请求路径。这在需要调整请求路径或进行URL重定向时非常有用。以下是关于Nginx rewrite​ 指令的详细介绍:

基本语法

rewrite​ 指令一般用于 server​、location​ 或 if​ 块中,其基本语法如下:

rewrite regex replacement [flag];
  • regex​:要匹配的正则表达式。
  • replacement​:替换后的URI。
  • flag​:用于控制重写操作的标志。

常用标志

  • last​:

    • 终止当前 rewrite​ 指令,并祛除余下所有规则的执行。服务将在新位置重新开始搜索请求。
    • 类似于 Apache 的 L​ 标志。
  • break​:

    • 终止当前 rewrite​ 指令的执行,但不进行位置重新搜索。
  • redirect​:

    • 返回302临时重定向到重新写的URI(替换后的URI)。强制浏览器使用替换URI重新请求。
  • permanent​:

    • 返回301永久重定向到替换后的URI。

示例

  1. 基本重写

    rewrite ^/images/(.*)\.jpg$ /pics/$1.png;
    

    /images/example.jpg​ 重写为 /pics/example.png​。

  2. 重定向

    rewrite ^/oldpath/(.*)$ /newpath/$1 permanent;
    

    /oldpath/anything​ 重定向(301)为 /newpath/anything​。

  3. 使用last标志进行重写

    server {
        listen 80;
        server_name example.com;
    
        location / {
            rewrite ^/foo/(.*)$ /bar/$1 last;
        }
    }
    

    如果请求为 /foo/item​,会被重写为 /bar/item​,然后Nginx会对 /bar/item​ 再进行匹配。

  4. 条件重写(if 块)

    if ($http_user_agent ~* "MSIE") {
        rewrite ^(.*)$ /msie.html break;
    }
    

    如果请求是来自IE浏览器,重写任何请求到 /msie.html​。

注意事项

  • rewrite​ 指令的执行顺序是在请求的处理规则前面,这意味着它在 location​ 块内的许多指令之前被执行。
  • 使用if​条件时应小心,因为不当使用可能导致不必要的性能影响或者逻辑错误。
  • rewrite​指令一般用于简单的URI重写场景,对于更复杂的请求处理逻辑,通常结合Nginx的其他高级特性来实现。

通过正确使用 rewrite​ 指令,可以优化URL结构,提高SEO效果,或者将请求重定向到新的服务路径。

标签:请求,rewrite,URI,Nginx,指令,重写
From: https://www.cnblogs.com/zysicyj/p/18607400/nginx-s-rewrite-instruction-3g5b7

相关文章

  • 用nginx正向代理,让内网主机通过外网主机访问外网
    需求1:某几个ip的代理server{listen9000;#监听端口server_namelocalhost;set$url"proxy_server_doman_or_ip";#设置代理的域名或IP变量,这里替换成自己需要代理的网站location/{proxy_passhttp:......
  • nginx 简介+应用
    文章目录nginx简介nginx二级目录处理二级目录实例列举1.第一个`location/`块2.第二个`location~^/(ui)`块3.第三个`location/api`块第一个`location/`与第二个`location~^/(ui)`是否重复nginx前端部署iframe嵌套配置设置后端服务转发实例......
  • Keepalived-Nginx实现高可用
    master机器配置文件:======================================================================!ConfigurationFileforkeepalived#全局配置global_defs{#路由ID,不能重复,通常为hostnamerouter_idmaster}#keepalived会定时执行脚本并对脚本执行的结果进行分析,动态......
  • docker搭建nginx-php环境
    首先,创建一个Dockerfile文件,内容如下:FROMphp:7.4-fpmRUNsed-i's/deb.debian.org/mirrors.tuna.tsinghua.edu.cn/g'/etc/apt/sources.listRUNsed-i's/security.debian.org/mirrors.tuna.tsinghua.edu.cn/g'/etc/apt/sources.list#安装NginxRUNapt-ge......
  • Sass中的@extend指令有什么作用?
    在Sass(SyntacticallyAwesomeStylesheets)中,@extend指令用于共享一组样式规则,从而避免代码重复,使样式表更加简洁和易于维护。它允许你将一个选择器(或一组选择器)的样式规则扩展到另一个选择器上。基本用法假设你有以下Sass代码:.message{border:1pxsolid#ccc;padding:......
  • Sass中的at-root指令有什么作用?
    在Sass(SyntacticallyAwesomeStylesheets)中,@at-root指令的作用是将选择器或规则从当前嵌套作用域中提升出来,直接插入到根作用域(即最顶层)中。这在避免过度嵌套、解决选择器优先级问题或组织样式时非常有用。常见的使用场景避免过度嵌套:当嵌套层级过多时,生成的CSS选择器会变......
  • Sass中的@media指令有什么作用?
    在Sass(SyntacticallyAwesomeStylesheets)中,@media指令用于实现媒体查询(MediaQueries),这是一种CSS功能,允许你根据设备的特性(如宽度、高度、分辨率、方向等)应用不同的样式规则。媒体查询在响应式网页设计中特别有用,因为它们允许你根据不同的屏幕尺寸和设备类型调整页面的布局和样式......
  • 转发:【AI系统】指令和存储优化
    除了应用极广的循环优化,在AI编译器底层还存在指令和存储这两种不同优化。指令优化指令优化依赖于硬件提供的特殊加速计算指令。这些指令,如向量化和张量化,能够显著提高计算密度和执行效率。向量化允许我们并行处理数据,而张量化则进一步扩展了这一概念,通过将数据组织成更高维度......
  • 转载:【AI系统】指令和存储优化
    除了应用极广的循环优化,在AI编译器底层还存在指令和存储这两种不同优化。指令优化指令优化依赖于硬件提供的特殊加速计算指令。这些指令,如向量化和张量化,能够显著提高计算密度和执行效率。向量化允许我们并行处理数据,而张量化则进一步扩展了这一概念,通过将数据组织成更高维度......
  • Maven概述安装 常用指令 Maven-IDEA集成
    一.Maven概述Maven是一个项目管理工具,具备以下几个关键要素:包含内容:包含一个对象模型、一组标准集合、一个依赖管理系统,以及用来运行定义在生命周期阶段中插件目标和逻辑。核心功能:能合理叙述项目间的依赖关系,也就是在项目为Maven项目的前提下,通过配置pom.xml文件来获......