Nginx的地址重写

一、基础知识

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 永久重定向

猜你喜欢

转载自blog.csdn.net/wgw_dream/article/details/84325407