Nginx能够实现URL Rewrite(重写URL),其实就是将用户的请求路径修改,通过修改结果来访问一个静态资源,或是后端应用服务器。值得注意的是,使用重写URL功能一定要谨慎,因为Nginx配置文件可读性不好,管理维护困难,而且很多要实现的功能和后端业务系统耦合,如果写入太多的业务逻辑,是十分不利于后期维护迁移的。因此,重写URL尽量仅作为一个我们运维人员设置的临时替代方案,或者一个特别简单的兼容性逻辑。
server {
rewrite <规则> <重写路径> <类型>;
}
$1
、$2
的写法包含正则表达式的捕获组将/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;
}