LNMP详解(十一)——Nginx URL重写原理

今天继续给大家介绍Linux运维的相关知识,本文主要内容是Nginx的 URL重写原理与实战。

一、URL重写场景

Nginx的URL重写也被称为Rewrite,主要作用是实现当客户端对特定URL访问的时候,根据客户端的访问信息实现跳转到其他URL处。URL重写在现在的网站中经常常见,比如:
1、对搜索引擎的访问进行优化,利于搜索引擎抓取页面。
2、隐藏站点的真实URL地址,使得URL资源更加简介。
3、当网站升级时,通过URL重写功能,将网站重定向到其他页面。
4、手机和电脑在访问同一站点时,反馈不同的页面,以便使得网站页面使用手机和电脑不同分辨率,使得页面更加美观。

二、URL重写规则

在Nginx的URL Rewrite的配置中有三大模块,分别是Rewrite结尾标识符,Rewrite规则表达式和Rewrite变量。下面我就对这三大模块进行详细介绍。

(一)Rewrite结尾标识符

Nginx的Rewrite结尾标识符,主要用于Rewrite规则末尾,表示规则的执行属性。Nginx的Rewrite结尾标识符主要有以下四种:
1、last
该标记表示已经完成了rewrite匹配。
2、break
该标记表示当该规则匹配完成后,不再进行后续的规则匹配。
3、redirect
该标记表示向客户端返回302临时重定向,浏览器地址会显示跳转后的URL地址。
4、permanent
该标记表示向客户端返回301永久重定向,浏览器地址会保持不变。

(二)Rewrite规则表达式

Nginx的Rewrite表达式采用了perl语法,主要用于参数、字符串的匹配。常用的Nginx Rewrite规则表达式如下所示:
1、.
匹配除了换行符之外的任意一个符号
2、[abc]
匹配字符串abc
3、[^abc]
匹配除了abc之外的字符串
4、abc|cba
匹配字符串abc或者cba
5、?
表示匹配前面的字符0次或者1次
6、+
表示匹配前面的字符1次或者多次
7、*
表示匹配前面的字符0次或者多次
8、^
匹配字符串开始
9、$
匹配字符串结束
10、\n
表示对字符n进行转义

(三)Rewrite变量

Rewrite变量常用语匹配HTTP头信息,比如浏览器类型、主机名等等,常见的Rewrite变量如下:
1、HTTP_USER_AGENT
表示客户端用户使用的代理(即服务器)。
2、HTTP_REFERER
表示用户访问该页面的来源(即从哪个页面来跳转到该页面的)
3、HTTP_COOKIE
表示用户的COOKIE
4、HTTP_HOST
表示服务器的ServerName域名
5、HTTP_ACCEPT
表示客户端的浏览器支持的MIME类型
6、REMOTE_ADDR
表示客户端的IP地址
7、QUERY_STRING
表示URL中访问的字符串
8、DOCUMENT_ROOT
表示服务器发布目录
9、SERVER_PORT
表示服务器端口
10、SERVER_PROTOCOL
表示服务器端采用的协议
11、TIME_YEAR、TIME_MON、TIME_DAY
表示当前时间,以上三个参数分别表示年、月和日。
原创不易,转载请说明出处:https://blog.csdn.net/weixin_40228200

你可能感兴趣的:(服务器运维,nginx,linux,服务器,Rewrite,URL重写)