3 Nginx地址重写
1 Nginx地址重写
- 什么是地址重写
- 获得一个来访的URL请求,然后改写成服务器可以处理的另一个URL
- 地址重写的好处
- 缩短URL,隐藏实际路径提高安全性
- 易于用户记忆和键入
- 易于被搜索引擎收录
- 地址重写语法结构
- rewrite语句
- rewrite regex replacement flag
- rewrite 旧地址 新地址 [选项]
- flag : break 、 last 、 redirect 、 permanent
- break : 停止执行其他的重写规则,完成本次请求
- last : 停止执行其他重写规则,地址栏不改变
- redirect : 302临时重定向,地址栏改变,爬虫不更新URL
- permanent : 301永久重定向,地址栏改变,爬虫更新URL
- 地址重写的选项
- last选项
打开nginx主配置文件,将之前的地址重写语句删除,在原位置替换为以下内容,last可以实现不再读取后面rewrite语句的效果
rewrite /a.html /b.html last; 不加last,用户访问a页面看到的是c页面,加了的话只能看到b页面
rewrite /b.html /c.html;
sbin/nginx -s reload 重置nginx服务
curl 192.168.2.5/a.html 访问a页面看到的是c页面,因为rewrite语句可以持续匹配并重写 - break选项
可以再次修改配置文件,将rewrite分别写到2个不同的location语句中(location语句可以实现如果用户访问的是什么页面,就执行后面大括号里面的任务),可以发现last语句失效,但如果改为break则可以在执行第一个rewrite语句后不再读取后面的语句。
location / { 这里是默认的location
rewrite /a.html /b.html break; 这里的last改成break
root html;
index index.html index.htm;
}
location /b.html { 这里创建的新location,如果用户访问的是b页面,就去执行大括号中任务
rewrite /b.html /c.html;
}
2 基本功能测试
- 应用实例
- 访问 a.html 页面看到的是 b.html
3 重定向测试
再修改主配置文件,添加redirect选项
4 测试不同网站间的跳转
- 并可以保留访问的页面
使用火狐访问192.168.2.5/a.html可以跳转到http://www.tmooc.cn/a.html
5 测试用户不同环境得到不同页面
准备两个页面
1套给火狐浏览器,另1套给curl
- 火狐浏览器访问http://192.168.2.5/a.html
- curl 192.168.2.5/a.html