一、基础知识
1、什么是地址重写?:
地址重写就是获得一个来访的URL请求,然后改写成服务器可以处理的另一个URL的过程
2、地址重写的好处:
(1)缩短URL,隐藏实际路径提高安全性
(2)易于用户记忆和键入
(3)易与被搜索引擎收录
3、关于Nginx服务器的地址重写主要用到的配置参数:
主要用到的配置参数是rewrite
rewrite regex replacement flag
rewrite 旧地址 新地址 [选项]
二、地址重写(非跳转地址栏)
1)修改Nginx服务配置:
[root@nginx ~]# vim /usr/local/nginx/conf/nginx.conf
.. ..
server {
listen 80;
server_name localhost;
location / {
root html;
ndex index.html index.htm;
rewrite /a.html /b.html;
}
}
2)创建测试页面
[root@nginx nginx]# echo aaa > /usr/local/nginx/html/a.html
[root@nginx nginx]# echo bbb > /usr/local/nginx/html/b.html
3)重新加载配置文件
[root@nginx ~]# /usr/local/nginx/sbin/nginx -s reload
4)测试
[root@nginx nginx]# curl http://127.0.0.1/a.html
bbb
三、地址重写(地址栏跳转)
1)修改Nginx服务配置:
[root@nginx ~]# vim /usr/local/nginx/conf/nginx.conf
.. ..
server {
listen 80;
server_name localhost;
location / {
root html;
index index.html index.htm;
rewrite /a.html /b.html redirect;
}
}
2)重新加载配置文件
[root@nginx ~]# /usr/local/nginx/sbin/nginx -s reload
#请先确保nginx是启动状态,否则运行该命令会报错,报错信息如下:
#[error] open() "/usr/local/nginx/logs/nginx.pid" failed (2: No such file or directory)
3)客户端测试(仔细观察浏览器地址栏的变化)
[root@nginx ~]# firefox http://127.0.0.1/a.html
实现curl和火狐访问相同链接返回的页面不同
1) 创建网页目录以及对应的页面文件:
[root@nginx ~]# echo "I am Normal page" > /usr/local/nginx/html/test.html
[root@nginx ~]# mkdir /usr/local/nginx/html/firefox/
[root@nginx ~]# echo "firefox page" > /usr/local/nginx/html/firefox/test.html
2) 修改Nginx服务配置
[root@nginx ~]# vim /usr/local/nginx/conf/nginx.conf
.. ..
server {
listen 80;
server_name localhost;
location / {
root html;
index index.html index.htm;
}
#这里,~符号代表正则匹配,*符号代表不区分大小写
if ($http_user_agent ~* firefox) { //识别客户端firefox浏览器
rewrite ^(.*)$ /firefox/$1;
}
}
3)重新加载配置文件
[root@proxy ~]# /usr/local/nginx/sbin/nginx -s reload
#请先确保nginx是启动状态,否则运行该命令会报错,报错信息如下:
#[error] open() "/usr/local/nginx/logs/nginx.pid" failed (2: No such file or directory)
4)访问测试
[root@client ~]# firefox http://192.168.4.5/test.html
[root@client ~]# curl http://192.168.4.5/test.html
地址重写格式【总结】
rewrite 旧地址 新地址 [选项];
last 不再读其他rewrite
break 不再读其他语句,结束请求
redirect 临时重定向
permament 永久重定向