重写URL

Nginx能够实现URL Rewrite(重写URL),其实就是将用户的请求路径修改,通过修改结果来访问一个静态资源,或是后端应用服务器。值得注意的是,使用重写URL功能一定要谨慎,因为Nginx配置文件可读性不好,管理维护困难,而且很多要实现的功能和后端业务系统耦合,如果写入太多的业务逻辑,是十分不利于后期维护迁移的。因此,重写URL尽量仅作为一个我们运维人员设置的临时替代方案,或者一个特别简单的兼容性逻辑。

配置写法

server {
  rewrite <规则> <重写路径> <类型>;
}
  • 规则:可以是一个前缀匹配字符串,或者一个正则表达式
  • 重写路径:重写到的路径,可以用类似$1$2的写法包含正则表达式的捕获组
  • 重写类型:
  • last:普通的重写
  • break:重写后,终止执行其它试图匹配的重写规则
  • redirect:通过302重定向实现跳转(重写)
  • permanent:通过301重定向实现跳转(重写),注:301有永久重定向的意义,302则是普通的重定向跳转

例子

/app/users/2重写为/app/users?id=2,然后转发到后端服务器上。

location /app {
    rewrite ^/app/users\/([^\/]+?)(\/|$) /app/users?id=$1 break;
    proxy_pass   http://127.0.0.1:8080;
}
作者:Gacfox
版权声明:本网站为非盈利性质,文章如非特殊说明均为原创,版权遵循知识共享协议CC BY-NC-ND 4.0进行授权,转载必须署名,禁止用于商业目的或演绎修改后转载。
Copyright © 2017-2024 Gacfox All Rights Reserved.
Build with NextJS | Sitemap