Rewrite功能配置
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:变量的值,可以是字符串、其他变量或者变量的组合等
配置实例
配置结果
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</