Apache正向代理与反向代理(3)

        在web服务器上配置虚拟主机并设置redirect参数,由于ProxyPassServer只有在出现302转发是才能体现出它与ProxyPass不同。为了模拟局域网环境,我们使用防火墙策略禁用客户端的访问。

wKioL1nQzMPz1lOVAABhR4Uj0Lo014.png

 

结果分析

        上面搭建好了代理服务器,接下来配合是elinks与tcpdump以及wireshark我们来做实验分析(这里主要是验证ProxyPassServer的作用,ProxyPass原理简单,这里不做实验证明)。

测试1:我们不开启ProxyPassServer选项,只使用ProxyPass选项。如下图

[root@linuxidc ~]#cat  /etc/httpd/conf.d/test.conf

<VirtualHost *:80>

    ProxyPass "/" "http://172.18.254.54/"       

    #ProxyPassReverse "/" "     # 注释掉 

</VirtualHost>

    在客户端上使用elinks访问代理服务器。

[root@linuxidc ~]#elinks 

由于没有ProxyPassServer选项,所以我们访问资源失败,出现下图提示。

wKiom1nQ7uqyaKkHAAAVO6nZvk0199.png

测试2:开启ProxyPassServer选项,我么先在Agent上开启tcpdump进行抓包

[root@linuxidc ~]# tcpdump tcp -i ens33 -w ./target.cap     # -w 表示将结果存储起来,方便wireshark进行分析

    在客户端上使用elinks进行访问,为了验证ProxyPassServer的功能我们访问两次。由于使用了ProxyPassServer功能,所以我们能看到重定向的文件内容。

wKioL1nQ1ZOQTArTAAATeGu0wIU763.png

    然后我们分析一下抓到的数据包。

wKiom1nQ1cXRMUIBAABKtqoQUgc867.png

    从上面的数据包信息可知当我们第一次访问index.html.txt时,由于index.html.txt重定向到了inde2.html,所以代理服务器在返回结果是,不是返回给客户端一个重定向后的资源(),这个资源对客户端是不能访问的,此时ProxyPassServer的作用就起作用了,代理服务器在返回该资源时,直接又去访问了重定向之后的资源,然后在返回给客户端数据。也验证了上文中提到的ProxyPassServer的工作原理。

本篇总结

        记得第一次看到这个两个参数的时候,也是一脸茫然,经过简单的实验发现,有没有ProxyPassServer参数都能访问成功,后来查找了许多资料,发现如果出现重定向(301、302)资源的情况下(目前我只发现这种时候会有区别,是不是唯一,我不敢说),客户端在去访问资源便不可以。于是亲手实验,发现果然如此,当添加ProxyPassServer参数后,访问重定向资源也能顺利访问了。由于实验需要很多的测试,一会儿在这台机器,一会儿在另外一台主机上,文章中为了能让大家能够很好的理解,有些小细节就省略了。实验步骤太多,所以绞尽脑汁也没有完美的描述出实验过程,望读者见谅。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/b0d3981a7c10f14a65fa1b262a44afe5.html