apache中的mod_proxy模块主要作用就是进行url的转发,即具有代理的功能。应用此功能,可以很方便的实现同tomcat等应用服务器的整合,甚者可以很方便的实现web集群的功能。

例如使用apache作为域名www.test.com代理服务器,让其暴露在公网上,即DNS解析到本机器上,真正提供web服务器的是另一台位于同一内网的机器上,假设起IP是192.168.100.22,那么只需要如下配置就可以了。

ProxyPass / http://192.168.100.22/
ProxyPassReverse / http://192.168.100.22/

ProxyPass 很好理解,就是把所有来自客户端对http://www.test.com的请求转发给http://192.168.100.22上进行处理

ProxyPassReverse 的配置总是和ProxyPass 一致,但用途很让人费解。似乎去掉它很能很好的工作,事实真的是这样么,其实不然,如果响应中有302重定向,ProxyPassReverse就派上用场。举例说明,假设用户访问http://www.test.com/exam.php,通过转发交给http://192.168.100.22 /exam.php处理,假定exam.php处理的结果是实现redirect到login.php(使用相对路径,即省略了域名信息),如果没有配置反向代理,客户端收到的请求响应是重定向操作,并且重定向目的url为http://192.168.100.22/login.php ,而这个地址只是代理服务器能访问到的,可想而知,客户端肯定是打不开的,反之如果配置了反向代理,则会在转交HTTP重定向应答到客户端之前调整它为 http://www.test.com/login.php,即是在原请求之后追加上了redirect的路径。当客户端再次请求http: //www.test.com/login.php,代理服务器再次工作把其转发到http://192.168.100.22/login.php

客户端到服务器称之为正向代理,那服务器到客户端就叫反向代理。

ProxyPass与ProxyPassReverse及ProxyPassMatch这几个都是APACHE的代理指令
1、ProxyPass:

语法:ProxyPass [path] !|url

它主要是用作URL前缀匹配,不能有正则表达式,它里面配置的Path实际上是一个虚拟的路径,在反向代理到后端的url后,path是不会带过去的,使用示例:

1)、ProxyPass / images/ !

这个示例表示,/images/的请求不被转发。
  • 1
  • 2

2)、ProxyPass /mirror/foo/ http://backend.example.com/

我们假设当前的服务地址是http://example.com/,如果我们做下面这样的请求:

http://example.com/mirror/foo/bar

那将被转成内部请求:

http://backend.example.com/bar
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

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

2、ProxyPassMatch

语法:ProxyPassMatch [regex] !|url

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

1、ProxyPassMatch ^/images !

这个示例表示对/images的请求,都不会被转发。
  • 1
  • 2

2、ProxyPassMatch ^(/.*.gif)http://backend.example.com

1

这个示例表示对所有gif图片的请求,都被会转到后端,如此时请求
http://example.com/foo/bar.gif,
那内部将会转换为这样的请求
http://backend.example.com/foo/bar.gif。
  • 1
  • 2
  • 3
  • 4
  • 5
3、ProxyPassReverse

语法:ProxyPassReverse [路径] url

它一般和ProxyPass指令配合使用,此指令使Apache调整HTTP重定向应答中Location, Content-Location, URI头里的URL,这样可以避免在Apache作为反向代理使用时。

后端服务器的HTTP重定向造成的绕过反向代理的问题。参看下面的示例

ProxyPass /example http://www.example.com/
ProxyPassReverse /example http://www.example.com/

Apache配置中ProxyPass与ProxyPassReverse及ProxyPassMatch的概述的更多相关文章

  1. ProxyPass与ProxyPassReverse及ProxyPassMatch的概述

    转载自:https://blog.csdn.net/xiaokui_wingfly/article/details/51481653 apache中的mod_proxy模块主要作用就是进行url的转发 ...

  2. Apache配置中的ProxyPass 和 ProxyPassReverse

    apache中的mod_proxy模块用于url的转发,即具有代理的功能.应用此功能,可以很方便的实现同tomcat等应用服务器的整合,甚者可以很方便的实现web集群的功能. 例如使用apache作为 ...

  3. 【转】Apache配置中ProxyPassReverse指令的含义

    此文章来源:http://blog.csdn.net/yl_wh/article/details/8697501 apache中的mod_proxy模块主要作用就是进行url的转发,即具有代理的功能. ...

  4. apache配置中ProxyPassReverse指令的含义

    apache中的mod_proxy模块主要作用就是进行url的转发,即具有代理的功能.应用此功能,可以很方便的实现同tomcat等应用服务器的整合,甚者可以很方便的实现web集群的功能. 例如使用ap ...

  5. apache配置中的小细节

    configuration error: couldn’t perform authentication错误的解决办法 configuration error: couldn’t perform au ...

  6. apache配置Options详解

    http://www.365mini.com/page/apache-options-directive.htm Options指令是Apache配置文件中一个比较常见也比较重要的指令,Options ...

  7. The requested URL / was not found on this server——Apache配置虚拟域名后无法访问localhost

    今天为了做项目,在Apache中配置了项目域名,成功访问.但是忽然发现要访问localhost突然出现The requested URL / was not found on this server. ...

  8. wdlinux中apache配置反向代理模块

    想要在.htaccess中开启反向代理功能都不行[apache中没有mod_proxy模块] .htaccess 文件内容如下 RewriteEngine On RewriteBase / Rewri ...

  9. apache配置 php中没有php5apache2_4.dll

    apache配置 php中没有php5apache2_4.dll 今天,在win7系统下安装Apache+PHP+MySQL时,终于体会到了版本多也不一定是好事,各种不兼容,主要是因为动态包的多少问题 ...

随机推荐

  1. Django的model查询操作 与 查询性能优化

    Django的model查询操作 与 查询性能优化 1 如何 在做ORM查询时 查看SQl的执行情况 (1) 最底层的 django.db.connection 在 django shell 中使用 ...

  2. Linux fork exec等

    http://www.cnblogs.com/leoo2sk/archive/2009/12/11/talk-about-fork-in-linux.html http://www.cnblogs.c ...

  3. 【解题报告】[动态规划] - PID90 / 未出现的子串

    原题地址:http://www.rqnoj.cn/problem/90 解题思路:题目看起来不太像动态规划... 我用一个数组f[i][j]来表示在数组第i个元素的后面第一次出现j的位置,为-1则是没 ...

  4. 在javascript中使用提示信息来熟悉当前的程序流程

    最近,因为需要,开始了解javascript,这个对我来说是个新的东西,在分析现有程序的功能的时候,需要增加一些提示信息来帮助了解程序的处理流程.于是在网上了解了一下提示信息的使用和区别.在此整理一下 ...

  5. linux学习 XShell上传、下载本地文件到linux服务器

    (一)通过命令行的方式 1.linux服务器端设置 在linux主机上,安装上传下载工具包rz及sz; 如果不知道你要安装包的具体名称,可以使用yum provides */name 进行查找系统自带 ...

  6. Activiti工作流学习之流程图应用详解

    Activiti工作流学习之流程图应用详解 1.目的  了解Activiti工作流是怎样应用流程图的. 2.环境准备2.1.相关软件及版本    jdk版本:Jdk1.7及以上 IDE:eclipse ...

  7. net core集成CAP

    net core集成CAP https://www.cnblogs.com/guolianyu/p/9756941.html 一.前言 感谢杨晓东大佬为社区贡献的CAP开源项目,传送门在此:.NET ...

  8. LeetCode Construct Binary Tree from String

    原题链接在这里:https://leetcode.com/problems/construct-binary-tree-from-string/description/ 题目: You need to ...

  9. LA2218 Triathlon

    题意 PDF 分析 设出长度\(x,y,1-x-y\),就是关于它们的二元一次不等式,判断有没有解. 可以用半平面交来解决. x/V[i]+y/U[i]+(1-x-y)/W[i] < x/V[j ...

  10. JAVA单例模式:懒汉式,饿汉式

    今天复习了一下java的单例模式,写了懒汉式和饿汉式的实现例子.代码如下: 1.懒汉式单例 package com.lf.shejimoshi; /** * @classDesc: 类描述:(懒汉式单 ...