nginx URL重写
来源:互联网 发布:python培训班wuhan 编辑:程序博客网 时间:2024/06/06 16:37
rewrite 主要功能就是实现URL重写,nginx的rewrite规则采用PCRE Perl兼容正则表达式的语法规则匹配,
如果需要Nginx的rewrite功能,在编译nginx之前,需要编译安装PCRE库。
通过rewrite规则,可以实现规范的URL、根据变量来做URL转向及选择配置。
if指令
语法:if(condition){...}
使用环境:server,location
该指令用于检查一个条件是否符合,如果条件符合,则执行大括号内的语句。
if指令不支持嵌套,不支持多个条件&&和||处理
其中,condition中可以包含的判断标识如下:
~区分大小写匹配
~*不区分大小写匹配
!~区分大小写不匹配
!~*不区分大小写不匹配
-f 和 !-f 用来判断是否存在文件
-d 和 !-d 用来判断是否存在目录
-e 和 !-e 用来判断是否存在文件或目录
-x 和 !-x 用来判断是否可执行
如下:如果是IE浏览器就进行跳转
if ($http_user_agent ~MSIE){ rewrite ^(.*)$/msie/$1 break; }
return指令
语法:return code
使用环境:server,location, if
该指令用于结束规则的执行并返回状态码给客户端,
状态码包括:
204(no content)
400(bad request)
402(payment required)
403(forbidden)
404(not found)
405(method not allowed)
406(not acceptable)
408(request timeout)
410(gone)
411(length required)
413(request entity too large)
416(requested range not satisfiable)
500(internal server error)
501(not implemented)
502(bad gateway)
503(service unavailable)
504(gateway timeout)
如下,如果访问的URL以.sh .bash结尾,返回状态码给403
location ~ .*\.(sh|bash)?$ { return 403; }
set指令
语法:set variable value
使用环境:server,location, if
该指令用于定义个变量,并给变量赋值
rewrite指令
语法:rewrite regex replacement flag
使用环境:server,location, if
该指令根据表达式来重定向URI,或者修改字符串
flag标记有:
last相当于apache里的[L]标记,表示完成rewrite
break终止匹配,不再匹配后面的规则
redirect返回302临时重定向,地址栏会显示跳转后的地址
permanent返回301永久重定向,地址栏会显示跳转后的地址
示例,将www重定向到http://
if ($host ~* www\.(.*)){ set $host_without_www $1; rewrite ^(.*)$ http://$host_without_www$1 permanent;}
使用案例
域名永久重定向
rewrite ^(.*)$ http://blog.720ui.com permanent;
当访问的文件和目录不存在时,重定向到某个HTML文件
if ( !-e $request_filename ){ rewrite ^/(.*)$ error.html last;}
访问目录跳转
将访问/b跳转到/bbs目录上去
rewrite ^/b/?$ /bbs permanent;
目录对换
/123456/xxxx ====> /xxxx?id=123456rewrite ^/(d+)/(.+)/ /$2?id=$1 last;
根据不同的浏览器将得到不同的结果
if ($http_user_agent ~ Firefox) { rewrite ^(.*)$ /firefox/$1 break; } if ($http_user_agent ~ MSIE) { rewrite ^(.*)$ /msie/$1 break; } if ($http_user_agent ~ Chrome) { rewrite ^(.*)$ /chrome/$1 break; }
防止盗链
根据referer信息防止盗链
location ~*\.(gif|jpg|png|swf|flv)${ valid_referers none blocked www.cheng.com*.test.com; if ($invalid_referer) rewrite ^/(.*) http://www.lianggzone.com/error.html }
禁止访问/data开头的文件
location ~ ^/data{ deny all;}
禁止访问以.sh .exe为文件后缀名的文件
location ~ .*\.(sh|exe)?$ { return 403; }
设置某些类型文件的浏览器缓存时间
location ~ .*.(gif|jpg|jpeg|png|bmp)${ expires 30d;}location ~ .*.(js|css)${ expires 1h;}
设置过期时间并不记录404错误日志
location ~(favicon.ico) { log_not_found off; expires 99d; break;}location ~(robots.txt) { log_not_found off; expires 7d; break;}
设置过期时间并不记录访问日志
这里是600秒,并不记录访问日志
location ^~ /html/scripts/loadhead_1.js { access_log off; root /opt/lampp/htdocs/web; expires 600;break;}
- nginx url 重写规则
- Nginx的url重写
- Nginx url重写小结
- nginx url重写
- Nginx之URL重写
- Nginx配置URL重写
- nginx URL重写
- nginx配置url重写
- nginx配置url重写
- nginx rewrite url 重写
- nginx配置url重写
- Nginx 配置url重写
- 图片防盗链 url重写(Nginx重写)
- nginx---支持thinkphp url重写
- NGINX URL重写实例讲解
- Cento7+Nginx 之 URL重写
- nginx rewrite(nginx url地址重写)
- nginx URL_REWRITE[ URL重写] VS apache的URL重写
- 新浪微博、微信、QQ平台分享
- python3踩坑
- 窗口相关代码(aaroid)
- Java密钥库之JCEKS
- js随机生成字符
- nginx URL重写
- Vmware Workstation player 12 安装android x86问题汇总
- socket linger 选项
- Struts标签实现模型驱动
- angular+ioinc
- Spring高级运用之浅析Spring Aware
- 在jsp中使用javabean
- 七牛云存储____功能简介(1)
- Linux下文件的三个时间