使用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上。

  1. 临时重定向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服务器配置文件如下图所示。

使用rewrite规则实现将所有到a域名的访问rewrite到b域名_客户端

1.2 客户端测试

    客户端直接访问原域名时会显示状态码302,加上L选项可看到跳转到新的web首页了。加上v选项可看到客户访问www.1.com时,先到到Nginx服务器,Nginx服务器将需要跳转的域名返回给客户端,客户端再使用新域名访问www.jf.com,并最终返回新的web首页内容。

使用rewrite规则实现将所有到a域名的访问rewrite到b域名_重定向_02

使用rewrite规则实现将所有到a域名的访问rewrite到b域名_客户端_03

    在浏览器上访问时,也能更直观地看到域名进行了跳转。

使用rewrite规则实现将所有到a域名的访问rewrite到b域名_客户端_04

使用rewrite规则实现将所有到a域名的访问rewrite到b域名_重定向_05

1.3 缓存功能测试

    由于redirect属于临时跳转,并不具备缓存功能,当Nginx服务器停止服务后,客户端访问www.1.com时会显示无法访问页面。

使用rewrite规则实现将所有到a域名的访问rewrite到b域名_重定向_06

使用rewrite规则实现将所有到a域名的访问rewrite到b域名_nginx服务器_07


  1. 永久重定向permanent

2.1 Nginx服务器配置文件

    permanent属于永久重定向,其处理请求的方式与redirect相同,也是在接收到用户访问请求后,先将新的URL返回给客户端,再由客户端访问新的URL并获取请求内容,配置文集部分只需将上面的redirect改为permanent即可。

使用rewrite规则实现将所有到a域名的访问rewrite到b域名_客户端_08

2.2 客户端测试

    客户端访问时,返回的状态码是301,加上L和v选项后,能看到也是经过了三次处理过程将结果返回给客户端。

使用rewrite规则实现将所有到a域名的访问rewrite到b域名_重定向_09

使用rewrite规则实现将所有到a域名的访问rewrite到b域名_nginx服务器_10

2.3 缓存功能测试

    由于permanent会缓存域名解析记录,所以当Nginx服务器停止服务后,浏览器中访问原域名仍然能进行跳转。

使用rewrite规则实现将所有到a域名的访问rewrite到b域名_重定向_11

使用rewrite规则实现将所有到a域名的访问rewrite到b域名_重定向_12

以上是关于使用rewrite规则实现将所有到a域名的访问rewrite到b域名的主要内容,如果未能解决你的问题,请参考以下文章

运维小白成长记——第十七周

Nginx实践:用rewrite规则实现域名重定向及客户端IP地址透传

Nginx 中location与rewrite

Apache URL重写规则

nginx+tomcat集群配置--rewrite规则和多应用根目录设定思路

使用 mod_rewrite 重写用户代理规则