nginx 重写规则 rewrite 模块
语法
语法 | 默认值 | 使用字段 | 作用 |
---|---|---|---|
break | none | server, location, if | 完成当前设置的重写规则,停止执行其他的重写规则。 |
set variable value | none | server, location, if | 为给定的变量设置一个特定值。 |
return code | none | server, location, if | 停止处理并为客户端返回状态码。非标准的 444 状态码将关闭连接,不发送任何响应头。可以使用的状态码有:204,400,402-406,408,410, 411, 413, 416 与 500-504。如果状态码附带文字段落,该文本将被放置在响应主体。相反,如果状态码后面是一个 URL,该 URL 将成为 location 头补值。没有状态码的 URL 将被视为一个 302 状态码。 |
rewrite_log on | rewrite_log off | server, location, if | 启用时将在 error log 中记录 notice 级别的重写日志。 |
rewrite regex replacement flag | none | server, location, if | 按照相关的正则表达式与字符串修改 URI,指令按照在配置文件中出现的顺序执行。可以在重写指令后面添加标记。注意:如果替换的字符串以 http://开头,请求将被重定向,并且不再执行多余的 rewrite 指令。尾部的标记(flag)可以是以下的值:last – 停止处理重写模块指令,之后搜索 location 与更改后的 URI 匹配.break – 完成重写指令。redirect – 返回 302 临时重定向,如果替换字段用 http://开头则被使用。permanent – 返回 301 永久重定向。 |
if (condition) { … } | none | server, location | 尽量考虑使用 trp_files 代替。判断的条件可以有以下值 |
- 一个变量的名称:空字符传”“或者一些“0”开始的字符串为 false。
- 字符串比较:使用=或!=运算符
- 正则表达式匹配:使用~(区分大小写)和~(不区分大小写),取反运算!~和!~。
- 文件是否存在:使用-f 和!-f 操作符
- 目录是否存在:使用-d 和!-d 操作符
- 文件、目录、符号链接是否存在:使用-e 和!-e 操作符
- 文件是否可执行:使用-x 和!-x 操作符'|
rewrite 重写规则
正则表达式