Nginx提供的全局变量或自己设置的变量,结合正则表达式和标志位实现url重写以及重定向。rewrite只能放在server{},location{},if{}中,并且只能对域名后边的除去传递的参数外的字符串起作用。
Rewrite主要的功能就是实现URL的重写,Nginx的Rewrite规则采用Pcre,perl兼容正则表达式的语法规则匹配,如果需要Nginx的Rewrite功能,在编译Nginx之前,需要编译安装PCRE库。
通过Rewrite规则,可以实现规范的URL、根据变量来做URL转向及选择配置。
Rewrite全局变量
nginx的rewrite规则就是使用正则匹配请求的url,然后根据定义的规则进行重写和改变,需ngx_http_rewrite_module模块来支持url重写功能,该模块是标准模块,默认已经安装。
下面举一些简单的例子,比如说限制某浏览器的访问,限制对某请求ip的访问:
在nginx中的nginx.conf配置文件的server模块中添加以下代码
## 如果访问的ip地址为192.168.2.176,则返回403
if ($remote_addr = 192.168.2.176) {
return 403;
}
因此,会出现以下情况:
在nginx中的nginx.conf配置文件的server模块中添加以下代码,限制谷歌浏览器访问:
## 不允许谷歌浏览器访问 如果是谷歌浏览器返回500
if ($http_user_agent ~ Chrome) {
return 500;
}
其实也就是从请求头User-Agent获得浏览器的信息进行判断能否访问
网友评论