正则表达式匹配 :

~     为区分大小写的匹配

~*     不区分大小写的匹配(匹配firefox的正则同时匹配FireFox)

!~     区分大小写的不匹配

!~*    不区分大小写的不匹配

 

.     匹配除换行符以外的任意字符

\w     匹配字母或数字或下划线或汉字

\s     匹配任意的空白符

\d     匹配数字

\b     匹配单词的开始或结束

^     匹配字符串的开始

$     匹配字符串的结束

 

*     重复零次或更多次

+     重复一次或更多次

?     重复零次或一次

{n}    重复n次

{n,}   重复n次或更多次

{n,m}  重复n到m次

*?     重复任意次,但尽可能少重复

+?     重复1次或更多次,但尽可能少重复

??     重复0次或1次,但尽可能少重复

{n,m}? 重复n到m次,但尽可能少重复

{n,}?  重复n次以上,但尽可能少重复

 

\W     匹配任意不是字母,数字,下划线,汉字的字符

\S     匹配任意不是空白符的字符

\D     匹配任意非数字的字符

\B     匹配不是单词开头或结束的位置

[^x]   匹配除了x以外的任意字符

 

文件及目录匹配,其中:

-f和!-f   用来判断是否存在文件

-d和!-d   用来判断是否存在目录

-e和!-e   用来判断是否存在文件或目录

-x和!-x   用来判断文件是否可执行

 

flag标记有:

last    相当于Apache里的[L]标记,表示完成rewrite

break    终止匹配, 不再匹配后面的规则

redirect    返回302临时重定向 地址栏会显示跳转后的地址

permanent   返回301永久重定向 地址栏会显示跳转后的地址

 

$args    此变量与请求行中的参数相等

$content_length    等于请求行的“Content_Length”的值。

$content_type    等同与请求头部的”Content_Type”的值

$document_root    等同于当前请求的root指令指定的值

$document_uri 与 $uri 一样

$host    与请求头部中“Host”行指定的值或是request到达的server的名字(没有Host行)一样

$limit_rate     允许限制的连接速率

$request_method    等同于request的method,通常是“GET”或“POST”

$remote_addr    客户端ip

$remote_port    客户端port

$remote_user    等同于用户名,由ngx_http_auth_basic_module认证

$request_filename    当前请求的文件的路径名,由root或alias和URI request组合而成

$request_body_file

$request_uri    含有参数的完整的初始URI

$query_string 与 $args一样

$server_protocol   等同于request的协议,使用“HTTP/1.0”或“HTTP/1.1”

$server_addr request 到达的server的ip,一般获得此变量的值的目的是进行系统调用。为了避免系统调用,有必要在listen指令中指明ip,并使用bind参数。

$server_name    请求到达的服务器名

$server_port    请求到达的服务器的端口号

$uri   等同于当前request中的URI,可不同于初始值,例如内部重定向时或使用index