1.Rewrite基本概述
1.什么是rewrite
Rewrite主要实现url地址重写,以及地址重定向,就是将用户请求web服务器的地址重新定向到其他URL的过程。
2.Rewrite使用场景
地址跳转:www.360buy.com--->www.jd.com
协议跳转: http://oldbey.com--->https://oldboy.com
静态:动态url---->静态url 防止url暴露网站路径(目录结构)
blog.oldboy.com/index,php?product=linux&page=01 ==rewrite==> blog.oldboy.com/linux/page01
其他跳转需求:seo 需求
nginx变量官方文档
http://nginx.org/en/docs/
if用法
Syntax:if(condition){...}
Defau7t: -
Context:server, locationl
if () {
满足条件后执行指令
}
#主要应用场景配合各种nginx变量(内置/手动创建)判断。…."
#常用变量
案例02:过滤Nginx请求中包含a1=3526的http请求到10.16.3.5的8080端口处理
re.oldboy.com?a1=3526&a2=666&a3=9999 $host $requst _uri if( $request_uri ~* 'a1=3526' ){ proxy_pass http://10.16.3.5:8080; }
$request_method 请求方法
$request_uri 请求的uri
$status
用于取出http请求报文中的内容
$http_
用于取出http响应报文中的内容
$sent_http_
1.使用方法选择你要取出的内容
2.判断是请求还是响应
3. 小写,减号变成下划线
$http_user_agent
User-Agent
set命令
set $oldboy "idao996"; return 200 $o1dboy;
#案例03:用户
用户请求 rewrite.oldboy.com.cn 用户访问 /code/rewrite/cn/index.html o1dboy cn
用户请求 rewrite.oldboy.com.jp 用户访问 /code/rewrite/ip/index.htm1 oldboy jp
return语法
#需求1: 如果用户使用ie浏览器访问rewrite.oldboy.com 则返回值字符串.
#需求3:如果用户使用ie浏览器访问rewrite.oldboy.com,则直接跳转到o1dboyedu.com
rewrire功能
简单案例1:
案例讲解:
##需求1:根据用户浏览器请求头中携带的语言调度到不同的页面
##需求2:用户通过手机设备访问,ur1.o1dboy.com 跳转至ur1.oldboy.com/m##
需求3:用户通过手机设备访问ur1.0ldboy.com 跳转至m.etiantian.org
#小结:
跳转方式###1. if+rewrite/return###2.if+nginx变量
持林扑3.set 设置变量
###4.rewrite/return 跳转
##需求4:用户通过http协议请求,能自动跳转至https协议
##需求5: 网站维护过程中,希望用户访问所有网站重定向至一个维护页面
##需求6:当网站遇到403 404 502 等错误时,自动跳转至临时维护的静态页 https://404.life
#需求7:公司网站在停机维护时,指定的ip能够正常访问,其他的ip跳转到维护页
rewrite_log开启
论坛rewirei重写案例
本文来自博客园,作者:孙龙-程序员,转载请注明原文链接:https://www.cnblogs.com/sunlong88/p/18508653