重定向
重定向(Redirect)就是通过各种方法将各种网络请求重新定个方向转到其它位置(如:网页重定向、域名的重定向、路由选择的变化也是对数据报文经由路径的一种重定向),可以简单理解为当我们要访问的资源不在此服务器上,那么客户端就会将请求转移到另一个服务器上去访问资源。转换请求这一部分是有客户端来完成的,用户如果不刻意查看是感觉不到的。其实是请求了两个获取到的资源,我们请求的URL地址也会发生变化。接下来让我们看看重定向的现象。
请求的URL地址
状态码为302表示重定向的意思,可以简单的理解为该资源原本确实存在,但已经被临时改变了位置。Location首部指定的是需要将页面重新定向至的地址。一般在响应码为 3xx 的响应中才会有意义。
重定向后的URL地址
重定向原理图
反向代理
反向代理服务器位于用户与目标服务器之间,但是对于用户而言,反向代理服务器就相当于目标服务器,即用户直接访问反向代理服务器就可以获得目标服务器的资源。同时,用户不需要知道目标服务器的地址,也无须在用户端作任何设定。在请求的过程中URL地址是不会发生变化的,第二次请求是由代理服务器去发送请求的,获取到用户想要的数据之后通过反向代理服务器返回给用户。所以给用户的感觉就是代理服务器就是目标服务器。接下来看一下配置反向代理的效果。
我们需要在服务器上的nginx服务器上添加方向代理的配置
server { listen 80; server_name www.wuzilong.com; #charset koi8-r; #access_log logs/host.access.log main; location / { root html; index index.html index.htm; } location /baidu/ { proxy_pass http://www.baidu.com/; } }
这样我们通过访问服务器的IP地址或者用户名后面拼接baidu就可以访问到百度的页面了。
反向代理原理图
重定向和反向代理的区别
重定向:1.浏览器的URL地址栏发生变化 2.第二次访问由客户端进行 3.两次不同的请求 反向代理:1.浏览器URL地址栏不发生变化 2.第二次访问由服务器进行 3.同一次请求