Nginx 配置(rewrite/localtion/变量)

一、rewrite 语法格式及参数:

rewrite         <regex>        <replacement>       [flag];

关键字            正则               替代内容             标记

flag标记说明:

last  #本条规则匹配完成后,继续向下匹配新的location URL规则。

break #本条规则匹配完成即终止,不再匹配后面的任何规则。

redircet #返回302临时重定向,浏览器地址会显示跳转后的URL地址。

permanent #返回301永久重定向,浏览器地址栏会显示跳转后的URL地址。

 

举例:rewrite ^/(.*) http://www.baidu.com/$1 permanent;

rewrite为固定关键字。^/(.*)匹配完整的域名及后面路径。http://www.baidu.com/$1中$1取自regex()内容。permanent为flag。

关于$1,$2,只需要记住第一个括号为$1,第二个括号为$2,例如:

请求的URL:/baidu.com/user/47/dige

请求后的URL:/baidu.com/user.php?id=47&name=dige

重写规则:rewrite ^/user/([0-9]+)/(.+)$  /user.php?id=$1&name=$2;

 

二、location的语法规则:

location [=|~|~*|^~] /url/ 

= 开头表示精确匹配。

^~ 开头表示URL以某个常规字符串开头。

~ 开头表示区分大小写的正则匹配。

~* 开头表示不区分大小写的正则匹配。

!~和!~* 分别为区分大小写不匹配及不区分大小写不匹配的正则。

 / 开头通用匹配,任何请求都会匹配。

匹配优先级:= >> ^~ >> 正则 >> /

 

三、Nginx配置可用变量:

常用于if条件判断:

if ($flag = "01") {
    return 301 https://www.xxx.cn$request_uri;
}

$args #这个变量等于请求行中的参数。

$content_length #请求头中的Content-length字段。

$content_type #请求头中的Content-Type字段。

$document_root #当前请求在root指令中指定的值。

$host #请求主机头字段,否则为服务器名称。

$http_user_agent #客户端agent信息

$http_cookie #客户端cookie信息

$limit_rate #这个变量可以限制连接速率。

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

$request_method #客户端请求的动作,通常为GET或POST。

$remote_addr #客户端的IP地址。

$remote_port #客户端的端口。

$remote_user #已经经过Auth Basic Module验证的用户名。

$request_filename #当前请求的文件路径,由root或alias指令与URI请求生成。

$query_string #与$args相同。

$scheme #HTTP方法(如http,https)。

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

$server_addr #服务器地址,在完成一次系统调用后可以确定这个值。

$server_name #服务器名称。

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

$request_uri #包含请求参数的原始URI,不包含主机名,如:”/foo/bar.php?arg=baz”。

$uri #不带请求参数的当前URI,$uri不包含主机名,如”/foo/bar.html”。

$document_uri #与$uri相同。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章