青蛙学Linux—Nginx中的内置变量及常用指令

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指令中。

原文地址:https://www.cnblogs.com/yu2006070-01/p/10219598.html