nginx的rewrite功能介绍

Rewrite 规则

ex:http://hostname/abc/abc.html
–>http://hostname/abc.php?abc
Rewrite对称URL Rewrite,即URL重写,就是把传入Web的请求重定向到其他URL的过程。
URL Rewrite最常见的应用是URL伪静态化,是将动态页面显示为静态页面方式的一种技术。比如http://www.123.com/news/index.asp?id=123 使用URLRewrite 转换后可以显示为 http://www.123.com/news/123.html

1、隐藏内部细节,提高安全性
2、美观
3、防盗链

Rewrite相关指令

Nginx Rewrite相关指令有if、rewrite、set、return等。

if 的语法 应用于 server和location环境内
if (condition) { … }

if可以支持如下条件判断匹配符号
~ 为区分大小写匹配
~* 为不区分大小写匹配
!~和!~*分别为区分大小写不匹配及不区分大小写不匹配
-f 和!-f 用来判断是否存在文件
-d 和!-d 用来判断是否存在目录
-e 和!-e 用来判断是否存在文件或目录
-x 和!-x 用来判断文件是否可执行

在匹配过程中可以引用一些Nginx的全局变量:
client(sip)–>server(dip/servername)

http://www.123.com/news/123.html

$args, 请求中的参数;
$document_root, 针对当前请求的根路径设置值;
$host, 请求信息中的"Host",如果请求中没有Host行,则等于设置的服务器名;
$limit_rate, 对连接速率的限制;
$request_method, 请求的方法,比如"GET"、"POST"等;
$remote_addr, 客户端地址;
$remote_port, 客户端端口号;
$remote_user, 客户端用户名,认证用;
$request_filename, 当前请求的文件路径名
$query_string, 与$args相同;
$scheme, 所用的协议,比如http或者是https
$server_protocol, 请求的协议版本,“HTTP/1.0"或"HTTP/1.1”;
$server_addr, 服务器地址,如果没有用listen指明服务器地址,使用这个变量将发起一次系统调用以取得地址(造成资源浪费);
$server_name, 请求到达的服务器名;
$document_uri 与$uri一样,URI地址;
$server_port, 请求到达的服务器端口号;

源:192.168.0.254(1024+)–>192.168.0.1(80)
请求url:http://192.168.0.1/123.html?123

log_format main ‘$remote_addr $remote_port $host $server_name $server_port $request $status $document_root $request_filename $query_string $scheme $server_protocol $document_uri’;

192.168.0.254 43466 192.168.0.1 80 GET /123.html HTTP/1.1 200 /webroot/vm01 vm01.baidu.com /webroot/vm01/123.html - http HTTP/1.1 /123.html

rewrite 指令根据表达式来重定向URI,或者修改字符串。可以应用于server,location, if环境下 每行rewrite指令最后应该根一个flag标记,支持的flag标记有:
last 表示完成rewrite
break 本条规则匹配完成后,终止匹配,不再匹配后面的规则
redirect 返回302临时重定向,浏览器地址会显示跳转后的URL地址
permanent 返回301永久重定向,浏览器地址不会显示跳转后URL地址

last和break标记的区别在于,last标记在本条rewrite规则执行完后,会对其所在的server { … } 标签重新发起请求,而break标记则在本条规则匹配完成后,停止匹配,不再做后续的匹配。另有些时候必须使用last,比如在使用alias指令时,而使用proxy_pass指令时则必须使用break。

rewrite	xxx	qqq	last
rewrite	xxx	qqq	break
rewrite	xxx	qqq	redirect
rewrite	xxx	qqq	permanent

相关推荐

  1. nginxrewrite功能介绍

    2024-06-12 12:50:01       31 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-06-12 12:50:01       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-06-12 12:50:01       101 阅读
  3. 在Django里面运行非项目文件

    2024-06-12 12:50:01       82 阅读
  4. Python语言-面向对象

    2024-06-12 12:50:01       91 阅读

热门阅读

  1. Elasticsearch6.7版本,内网中其他电脑无法连接

    2024-06-12 12:50:01       24 阅读
  2. Elasticsearch分析器与分词器:定制文本处理流程

    2024-06-12 12:50:01       30 阅读
  3. Web前端网页设计笔试:深入剖析与技巧攻略

    2024-06-12 12:50:01       31 阅读
  4. 匿名函数、lambda匿名函数 ( Everything is up to us!)

    2024-06-12 12:50:01       27 阅读
  5. 创建数据库用户

    2024-06-12 12:50:01       31 阅读
  6. mkdir命令和mkdirs命令

    2024-06-12 12:50:01       29 阅读
  7. 新字符设备驱动实验学习

    2024-06-12 12:50:01       28 阅读
  8. ubuntu 永久 磁盘挂载

    2024-06-12 12:50:01       32 阅读
  9. nginx配置

    2024-06-12 12:50:01       29 阅读