1、Nginx中常用的内置变量
Nginx的内置变量可以应用在配置文件中,比如设置日志记录的格式等。
Nginx中有以下一些常用的内置变量:
$args # 此变量与请求行中的参数相等 $document_root # 此变量等同于当前请求的root指令指定的值 $uri # 表示不带请求参数的当前URI,$uri不包含主机名 $document_uri # 此变量与$uri含义一样 $host # 此变量与请求头部中“Host”行指定的值一致 $limit_rate # 此变量用来设置限制连接的速率 $request_method # 此变量等同于request的method,通常是“GET”或“POST” $remote_addr # 此变量表示客户端IP地址。 $remote_port # 此变量表示客户端端口。 $remote_user # 此变量等同于用户名,由ngx_http_auth_basic_module认证。 $request_filename # 此变量表示当前请求的文件的路径名,由root或alias和URI request组合而成 $request_uri # 此变量表示含有参数的完整的初始URI $query_string # 此变量与$args含义一致 $server_addr # 表示请求的服务器地址 $server_name # 此变量表示请求到达的服务器名。默认是localhost $server_port # 此变量表示请求到达的服务器的端口号 $request_uri # 包含请求参数的原始URI,不包含主机名,由客户端请求决定,不能修改
2、Nginx中的常用指令
2.1、if指令
if指令用于判断一个条件,如果条件成立,则执行执行的语句。if指令的语法如下:
if (条件){ 执行的语句; }
if指令的默认值为none,可使用在配置文件中的server和location部分。
if指令还可以在判断语句中指定正则表达式或通过Nginx内置变量来进行匹配条件。正则相关的匹配规则如下:
- ~:区分大小写匹配
- ~*:不区分大小写匹配
- !~和!~*:区分大小写不匹配和不区分大小写不匹配
文件及目录匹配:
- -f和!-f:判断是否存在文件
- -d和!-d:判断是否存在目录
- -e和!-e:判断是否存在文件或目录
- -x和!-x:判断文件是否可执行
2.2、rewrite指令
Nginx通过ngx_http_rewrite_module模块支持URL重写和if条件判断。但要实现URL重写rewrite功能,需要pcre的支持。rewrite指令的语法如下:
rewrite 重写规则 标记;
支持的标记主要有:
- last:完成rewrite后搜索相应的URI或location,浏览器地址栏的URL不变
- break:终止匹配,不再匹配后面的规则,浏览器地址栏的URL不变
- redirect:返回302临时重定向,在浏览器地址栏会显示跳转后的URL
- permanent:返回301永久重定向,在浏览器的地址栏会显示跳转后的URL
rewrite指令的默认值为none,可以在配置文件的server和location部分以及if指令中使用。
2.3、set指令
通过set指令可以设置一个变量并为其赋值,值可以是文本、变量或它们的组合。也可以使用set指令定义一个新的变量,但不能设置$http_xxx头部变量的值。set指令的语法如下:
set 变量名 值;
set指令的默认值为none,可使用在配置文件中的server和location部分以及if指令中。
2.4、break指令
break指令可在匹配完当前的规则后不再匹配后面的规则。break指令的语法如下:
break;
break指令的默认值为none,可使用在配置文件中的server和location部分以及if指令中。