Nginx_Rewrite功能配置

Rewrite功能配置

  • 1、简介
  • 2、set 指令
  • 3、Rewrite 常用全局变量
  • 4、if指令
    • 4.1. 变量名。如果变量名对应的值为空字符串或'0',if都判断为false,其他条件为true
    • 4.2 使用 '=' 和 '!=' 比较变量和字符串是否相等,满足条件为true,不满足为false
    • 4.3 使用正则表达式对变量进行匹配,匹配成功返回true,否则返回false。
    • 4.4 判断请求的文件是否存在使用 '-f' 和 '!-f',
  • 5、break指令
  • 6、return 指令
  • 7、rewrite指令
    • 7.1 rewrite
    • 7.2 flag: 用来设置rewrite对URI的处理行为,可选值有如下:
      • 7.2.1 last
      • 7.2.2 break
      • 7.2.3 redict
      • 7.2.4 permanent
    • 7.3 rewrite_log 指令

1、简介

Rewrite是Nginx服务器提供的一个重要基本功能,是Web服务器产品中几乎必备的功能。主要的作用是用来实现URL的重写。

注意: Nginx服务器的Rewrite功能的实现依赖于PCRE的支持,因此在编译安装Nginx服务器之前,需要安装PCRE库。Nginx使用的是ngx_http_rewrite_module模块来解析和处理Rewrite功能的相关配置

Rewrite的相关指令

set 指令
if 指令
break 指令
return 指令
rewrite 指令
rewrite_log 指令

Rewrite 的 应用场景

域名跳转
域名镜像
独立域名
目录自动添加 '/'
合并目录
防盗链的实现

2、set 指令

该指令用来设置一个新的变量。

语法  set  $variable value;
默认值 -
位置 server、location、if

variable: 变量的名称、该变量名称要用 ‘$’ 作为变量的第一个字符,且不要与Nginx服务器预设的全局变量同名
value:变量的值,可以是字符串、其他变量或者变量的组合等

配置实例
Nginx_Rewrite功能配置_第1张图片

配置结果
Nginx_Rewrite功能配置_第2张图片

3、Rewrite 常用全局变量

变量  					说明
$args    				变量中存放了请求URL中的请求参数,比如 http://192.168.200.133/server?arg1=value&arg2=value2
                        中的'arg1=value1&arg2=value2',功能和query_string一样


$http_user_agent 		变量存储的是用户访问服务的代理信息(如果通过浏览器访问,记录的是浏览器的相关版本信息)

$host       			变量存储的是访问服务器的server_name值

$document_uri			变量存储的是当前访问地址的URI。比如 http:192.168.200.133/server?id=10&name=zhangsan中的'/server',
						 功能和$uri一样

$document_root          变量存储的是当前请求对应location的root值,如果未设置,默认指向Nginx自带html目录所在位置

$content_length   		变量存储的是请求头中的Content-Length的值

$content_type            变量存储的是请求头中的Content-Type的值

$http_cookie             变量存储的是客户端的cookie信息,可以通过add_header  Set-Cookie 'cookieName=cookieValue' 来添加cookie数据

$limit_rate             变量中存储的是Nginx服务器对网络连接速率的限制,也就是Nginx配置中对limit_rate指令设置的值,默认是0,不限制。

$remote_addr            变量中存储的是客户端的IP地址

$remote_port             变量中存储了客户端与服务端建立连接的口号

$remote_user            变量中存储了客户端的用户名,需要有认证模块才能获取

$scheme                 变量中存储了访问协议

$server_addr           变量中存储了服务端的地址

$server_name           变量中存储了客户端请求到达服务器的名称

$server_port           变量中存储了客户端请求到达服务器的端口号

$server_protocol        变量中存储了客户端请求协议的版本,比如 'HTTP/1.1'


$request_body_file     变量中存储了发给后端服务器的本地文件资源的名称

$request_method       变量中存储了客户端的请求方式,比如 'GET','POST'

$request_filename    变量中存储了当前请求的资源文件的路径名


$request_uri          变量中存储了当前请求的URI,并且携带请求参数,比如http://192.168.200.133/server?id=10

你可能感兴趣的:(Nginx,nginx,运维)