**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不包含参数
转载于:https://blog.51cto.com/tz666/1748587