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

        2)ProxyPass /mirror/foo/   我们假设当前的服务地址是,如果我们做下面这样的请求:那将被转成内部请求:

    注意:配置的时候,不需要被转发的请求,要配置在需要被转发的请求前面。

2 ProxyPassMatch

    语法:ProxyPassMatch [regex] !|url

    说明:这个实际上是url正则匹配,而不是简单的前缀匹配,匹配上的regex部分是会带到后端的url的,这个是与ProxyPass不同的。使用示例:

        1) ProxyPassMatch ^/images !  这个示例表示对/images的请求,都不会被转发。

        2 )ProxyPassMatch ^(/.*.gif)    这个示例表示对所有gif图片的请求,都被会转到后端,如此时请求 ,那内部将会转换为这样的请求://www.linuxidc.com/admin/bar.gif。

3 ProxyPassReverse

    语法:ProxyPassReverse [路径] url

    说明:它一般和ProxyPass指令配合使用,此指令使Apache调整HTTP重定向应答中Location, Content-Location, URI头里的URL,这样可以避免在Apache作为反向代理使用时。后端服务器的HTTP重定向造成的绕过反向代理的问题。参看下面的例子:

    ProxyPass /Hadoop /

    ProxyPassReverse /hadoop /

实验环境搭建

        上面介绍了ProxyPass与ProxyPassServer以及ProxyPassMatch的基础用法,下面详解向大家解释他们的工作原理。

        ProxyPass 很好理解,就是把所有来自客户端对的请求转发给上进行处理。ProxyPassReverse 的配置总是和ProxyPass 一致,但用途很让人费解。似乎去掉它很能很好的工作,事实真的是这样么,其实不然,如果响应中有重定向,ProxyPassReverse就派上用场。

        ProxyPassReverse 工作原理:假设用户访问,通过转发交给 /index.html.txt处理,假定index.html.txt处理的结果是实现redirect到inde2.txt(使用相对路径,即省略了域名信息),如果没有配置反向代理,客户端收到的请求响应是重定向操作,并且重定向目的url为 ,而这个地址只是代理服务器能访问到的,可想而知,客户端肯定是打不开的,反之如果配置了反向代理,则会在转交HTTP重定向应答到客户端之前调整它为 ,即是在原请求之后追加上了redirect的路径。当客户端再次请求http: //www.linuxidc.com/inde2.txt,代理服务器再次工作把其转发到。客户端到服务器称之为正向代理,那服务器到客户端就叫反向代理。

    1)实验前准备

        准备三台虚拟机,一台主机充当代理服务器,一台主机当web服务器,一台主机作为客户端使用。为了实验的方便,我们关闭三台主机的防火墙与SELINUX,并安装http服务包。

[root@linuxidc ~]# iptables -F             # 关闭防火墙

[root@linuxidc ~]# setenforce 0            # 临时关闭selinux

[root@linuxidc ~]# sed -i 's/^SELINUX=.*$/SELINUX=disabled/' /etc/selinux/config #永久关闭

[root@linuxidc ~]#

    2)配置代理服务器

        代理服务器主要是实现对客户端的访问进行转发,去web服务器上替客户端访问资源。

wKioL1nQzLCAUc8qAAAla_v-hLc227.png

    3)配置web服务器

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

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