您的位置:首页 > 运维架构 > Nginx

nginx(五)rewrite

2016-03-07 22:35 579 查看
**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:是否存在且可执行;

rewrite ^(.*)$ https://$host$1 permanent;  #将http重定向至https(定义在server中)

if (!-e $request_uri) {     #如果客户端请求的uri不存在时,重定向至首页文件
rewrite ^ /index.php break;
}
if (-d $request_filename) {     #自动把客户端请求的目录文件加“/”
rewrite ^/(.*)([^/])$ http://$host/$1$2/ permanent;
}

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不包含参数
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: