URL重写 ----- rewrite
if指令
if (condition) {......} 代表条件为真时的nginx操作
condition条件的写法:
1) 变量名
如果变量的值为空,或者为以"0"开头的任意字符串,条件为假,其他则为真
if ($slow) {....}
2) 使用"="或者"!="比较变量的值
if ($request_method = POST) {.....}
3) 使用正则表达式与变量的值进行匹配
变量名与正则表达式间使用~, ~*, !~, !~*进行连接
在正则表达式中使用()可以对字符进行分组,在{}中可以用$1....$9引用分组
正则表达式写时不需要加双引号,但是如果正则表达式中含有}和;字符,则必须要使用双引号
if ($http_user_agent ~ MSIE) {.....}
4) 判断请求的文件是否存在(-f,!-f)
5) 判断请求的目录是否存在 (-d, !-d)
6) 判断请求的目录或文件是否存在 (-e, !-e)
7) 判断请求的文件是否可执行 (-x, !-x)
Nginx变量
1) $args
存放URL中的请求指令
https://reg.jd.com/reg/person?ReturnUrl=https%3A//sale.jd.com/act/r1z8LpvTcxkDbge.html
ReturnUrl=https%3A//sale.jd.com/act/r1z8LpvTcxkDbge.html
2) $content_length
存放请求报文中content_length字段内容
3) $content_type
存放请求报文中content_type字段内容
4) $document_root
存放针对当前请求的根路径
5) $document_uri
存放请求报文中的当前URI,并且不包括请求指令
https://reg.jd.com/reg/person?ReturnUrl=https%3A//sale.jd.com/act/r1z8LpvTcxkDbge.html
/reg/person
6) $host
存放请求报文中的主机部分
https://reg.jd.com/reg/person?ReturnUrl=https%3A//sale.jd.com/act/r1z8LpvTcxkDbge.html
reg.jd.com
7) $http_user_agent
存放客户端代理信息(浏览器)
8) $http_cookie
存放客户端的cookie信息
9) $limit_rate
存放nginx服务器对网络连接速率的限制,也就是ngnix配置文件中limit_rate指令的值
10) $remote_addr
存放客户端地址
11) $remote_port
存放客户端端口
12) $remote_user
存放客户端的用户名
13) $request_body_file
存放发给后端服务器的本地文件资源名称
14) $request_method
存放客户端请求资源的方法, GET, POST, PUT, DELETE, HEAD
15) $request_filename
存放当前请求的资源文件的路径名
16) $request_uri
存放当前请求的URI,并且带有请求指令
https://reg.jd.com/reg/person?ReturnUrl=https%3A//sale.jd.com/act/r1z8LpvTcxkDbge.html
/reg/person?ReturnUrl=https%3A//sale.jd.com/act/r1z8LpvTcxkDbge.html
17) $query_string
与变量$args含义相同
18) $scheme
存放客户端请求使用的协议,如果http, https
19) $server_protocol
存放客户端请求协议的版本 HTTP/1.0 HTTP/1.1
20) $server_addr
存放服务器地址
21) $server_name
存放了客户端请求到达的服务器的名称
22) $server_port
存放了客户端请求到达的服务器的端口号
23) $uri
与变量$document_uri含义相同