天天看点

nginx(五)rewrite

**ngx_http_rewrite_module模块配置**

将请求的uri基于正则表达式进行重写;

例:

   http-->https

   domain1.tld-->domain2.tld

   uri1-->uri2

指令:

    rewrite regex replacement [flag];

regex:正则表达式,用于匹配用户请求的uri;

replacement:重写之后的结果;

[flag]:

last:重写完成之后停止对当前的uri进一步处理,改为对新uri的新一轮处理;

break:重写完成之后停止对当前uri的处理,转为其后面的其他配置;

redirect:重写完成之后会返回客户端一个临时的重定向,由客户端对新的url重新发起请求(302);

permanent:重写完成之后会返回客户端一个永久的重定向,由客户端对新的url重新发起请求(301);

PCRE正则表达式元字符:

字符匹配:.,[],[^]

次数匹配:*,+,?,{m},{m,},{m,n}

位置锚定:^,$

或:|

分组:(),后向引用:$1,$2...

if(condition){...}条件判断,引用新的配置上下文;

condition:比较表达式

==,!=:等于,不等于;

~:模式匹配,区分字符大小写;

~*:模式匹配,不区分字符大小写;

!~:模式不匹配,区分字符大小写;

!~*:模式不匹配,不区分字符大小写;

文件及目录判断:

-f,!-f:是否存在且为普通文件;

-d,!-d:是否存在且为目录文件;

-e,!-e:是否存在;

-x,!-x:是否存在且可执行;

nginx中常用的参数:

$args :请求中的参数;

$content_length:HTTP请求信息里的“Content_Length”

$content_type:HTTP请求信息里的“Content_Type”

$document_root:当前请求的根路径

$document_uri:与$uri相同

$host:请求信息中的“Host”,如果请求中没有Host值,则等于设置的服务器名

$http_user_agent:请求的客户端类型

$http_cookie:请求信息中的cookie

$limit_rate:限制的速率

$request_body_file:客户端请求主体信息的临时文件名

$request_method:客户端请求方法

$remote_addr:客户端的IP地址

$remote_port:客户端的端口

$remote_user:客户端的用户名

$request_filename:请求的文件

$request_uri:客户端请求的uri包含参数

$query_string:与$arg相同

$scheme:请求的HTTP方法,如:http,https

$server_protocol:请求使用的协议,通常是HTTP/1.0或HTTP/1.1

$server_addr:服务器地址

$server_name:服务器名称

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

$uri:请求中的uri不包含参数