nginx rewrite 用法如何使用rewrite去除URL中的特定参数,


rewrite 基本介绍

rewrite是实现URL重写的关键指令,根据regex (正则表达式)部分内容,重定向到replacement,结尾是flag标记。

基本语法:

rewrite 	<regex> 	<replacement> 	[flag];
关键字 		正则 				替代内容 			flag标记
  • regex: 正则表达式语句进行规则匹配
  • replacement: 将正则匹配的内容替换成replacement
  • flag: last | break | redirect | permanent
    • last : 本条规则匹配完成后,继续向下匹配新的location URI规则
    • break: 本条规则匹配完成即终止,不再匹配后面的任何规则
    • redirect : 回302临时重定向,浏览器地址会显示跳转后的URL地址 (防爬虫)
    • permanent : 返回301永久重定向,浏览器地址栏会显示跳转后的URL地址

rewrite 使用位置

  • server : 在server中针对所有的请求
  • location : 在 location 中则针对 单个匹配路径的
  • If

nginx rewrite 用法,用rewrite去除URL中的特定参数

日常服务中经常会用Nginx做一层代理转发,把Nginx当做前置机

比如,以下配置:

server {
    # 对外暴露 80 端口
    listen    80;
    server_name 192.168.10.231;
    # 后端API地址暴露为:http://192.168.10.231/apis
    location /apis {
        proxy_pass   http://127.0.0.1:8000/;
        proxy_pass_request_headers      on;
          # 重写URL 去除apis
        rewrite "^/apis/(.*)$" /$1 break;
    }
}

这里的rewrite 就是为了去除URL中的/apis,实际的后端api中是没有这个参数的,但是为了做到在Nginx转发请求,前端需要加上这个参数,以便于区别

比如前端的请求地址是

http://192.168.10.231/apis/user

那么实际上经过Nginx转发后请求的地址是

http://127.0.0.1:8000/user

rewrite “^/api/(.)”/1 break,路径重写:

(1)"^/api/(.)$":匹配路径的正则表达式,用了分组语法就是*(.)**,把/api/以后的所有部分当做1组;
(2)/$1:重写的目标路径,这里用$1引用前面正则表达式匹配到的分组(组编号从1开始,也就是api),即/api/后面的所有。这样新的路径就是除去/api/以外的所有,就达到了去除/api前缀的目的

break:指令,常用的有2个,分别是:last、break;

(1)last:重写路径结束后,将得到的路径重新进行一次路径匹配;
(2)break:重写路径结束后,不再重新匹配路径。

到此这篇关于nginx rewrite 用法如何使用rewrite去除URL中的特定参数的文章就介绍到这了,更多相关nginx rewrite 用法内容请搜索PHP之友以前的文章或继续浏览下面的相关文章希望大家以后多多支持PHP之友!

您可能感兴趣的文章:
  • 详解nginx中location、rewrite用法总结
  • nginx rewrite参数解析
  • 详解nginx rewrite和根据url参数location
  • nginx rewrite 伪静态配置参数和使用例子
  • nginx rewrite 伪静态配置参数详细说明

相关内容