使用rewrite规则实现将所有到a域名的访问rewrite到b域名
Posted JohnnyFang
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用rewrite规则实现将所有到a域名的访问rewrite到b域名相关的知识,希望对你有一定的参考价值。
rewrite指令通过正则表达式的匹配来改变URI,可以同时存在一个或多个指令,按照顺序依次对URI进行匹配,rewrite主要是针对用户请求的URL或者是URI做具体处理。利用nginx的rewrite的指令,可以实现url的重新跳转,rewrite有四种不同的flag,分别是redirect(临时重定向302)、permanent(永久重定向301)、break和last,其中前两种是跳转型的flag,后两种是代理型。
本次实验主要通过永久和临时重定向两种方式来实现域名跳转,将访问www.1.com这一域名的请求都转向www.jf.com上。
- 临时重定向redirect
1.1 Nginx服务器配置文件
redirect属于临时重定向,重写完成后以临时重定向方式直接返回重新生成的新URL给客户端,由客户端来重新发起请求。笔者以上周编译安装的Nginx服务PC端为例,其绑定的域名为www.1.com,web首页显示“pc website”,现将访问原域名的请求跳转至www.jf.com上,新的web首页内容显示“this is the new website page”,则Nginx服务器配置文件如下图所示。
1.2 客户端测试
客户端直接访问原域名时会显示状态码302,加上L选项可看到跳转到新的web首页了。加上v选项可看到客户访问www.1.com时,先到到Nginx服务器,Nginx服务器将需要跳转的域名返回给客户端,客户端再使用新域名访问www.jf.com,并最终返回新的web首页内容。
在浏览器上访问时,也能更直观地看到域名进行了跳转。
1.3 缓存功能测试
由于redirect属于临时跳转,并不具备缓存功能,当Nginx服务器停止服务后,客户端访问www.1.com时会显示无法访问页面。
- 永久重定向permanent
2.1 Nginx服务器配置文件
permanent属于永久重定向,其处理请求的方式与redirect相同,也是在接收到用户访问请求后,先将新的URL返回给客户端,再由客户端访问新的URL并获取请求内容,配置文集部分只需将上面的redirect改为permanent即可。
2.2 客户端测试
客户端访问时,返回的状态码是301,加上L和v选项后,能看到也是经过了三次处理过程将结果返回给客户端。
2.3 缓存功能测试
由于permanent会缓存域名解析记录,所以当Nginx服务器停止服务后,浏览器中访问原域名仍然能进行跳转。
以上是关于使用rewrite规则实现将所有到a域名的访问rewrite到b域名的主要内容,如果未能解决你的问题,请参考以下文章
Nginx实践:用rewrite规则实现域名重定向及客户端IP地址透传