apache做反向代理服务器
apache代理分为正向代理和反向代理:
1 正向代理: 客户端无法直接访问外部的web,需要在客户端所在的网络内架设一台代理服务器,客户端通过代理服务器访问外部的web(需要在客户端的浏览器中设置代理服务器)
适用于: ①局域网的代理服务器(一般是网关,相当于squid的一般用法)
②访问某个受限网络的代理服务器,如教育网访问某些国外网站需要找代理
2 反向代理: 客户端能访问外部的web,但是不能访问目标web,目标web所在的网络内一台机器充当目标web的代理,客户端直接访问代理就像访问目标web一样(此代理对客户端透明,即客户端不用做如何设置,并不知道实际访问的只是代理而已,以为就是访问的目标)
适用于: ①idc的某台目标机器只对内开放web,外部的客户端要访问,就让另一台机器做proxy,外部直接访问proxy即相当于访问目标
②idc的目标机器的某个特殊的web服务跑在非正常端口如9000,而防火墙上只对外开放了80,此时可在80上做proxy映射到9000,外部访问80即相当于9000
简单示意图如下
 
本例中
机器192.168.0.114是我们的reverse proxy server
apache/2.0.63运行在其80端口
上面有两个域名的虚拟主机
www.a.org
www.b.org
要实现的效果是:
访问 www.a.org 即相当于访问另一台机器192.168.0.115
访问 www.b.org 即相当于访问本机的9000端口
 
apache的proxy功能由其proxy模块实现.加载模块有两种方式:静态和动态,现分别说明:
一 静态加载
静态加载,在编译apache时候编译进去,编译参数如下:
"./configure" \
"-prefix=/usr/local/apache3" \
"--enable-so" \
"--enable-rewrite" \
"--with-mpm=prefork" \
"--enable-proxy" \ (这个参数即是代理模块启用)
安装完成后查看模块列表
/usr/local/apache3/bin/httpd -l
显示
Compiled in modules:
core.c
mod_access.c
mod_auth.c
mod_include.c
mod_log_config.c
mod_env.c
mod_setenvif.c
mod_proxy.c
proxy_connect.c
proxy_ftp.c
proxy_http.c
prefork.c
http_core.c
.......
编辑配置文件 httpd.conf
在虚拟主机部分
NameVirtualHost *:
<VirtualHost *:>
ServerAdmin webmaster@dummy-host.example.com
ServerName www.a.org
ProxyRequests Off
<Proxy *>
Order deny,allow
Allow from all
</Proxy>
ProxyPass / http://192.168.0.115/
ProxyPassReverse / http://192.168.0.115/
</VirtualHost> <VirtualHost *:>
ServerAdmin webmaster@dummy-host.example.com
ServerName www.b.org
ProxyRequests Off
<Proxy *>
Order deny,allow
Allow from all
</Proxy>
ProxyPass / http://127.0.0.1:9000/
ProxyPassReverse / http://127.0.0.1:9000/
</VirtualHost>
二 动态加载
动态加载:编译进一个已经装好了的apache中(编译为dso模块)
已经装好的apache在 /usr/local/apache2
进入apache源码的模块目录进行编译
cd httpd-2.0./modules/proxy/
/usr/local/apache2/bin/apxs -c -i -a mod_proxy.c proxy_connect.c proxy_http.c proxy_util.c
从输出里面看到apache的modules目录下已经产生了mod_proxy.so,且已经在httpd.conf中激活了
cd /usr/local/apache2/conf/
ls ../modules/ 看到确实有mod_prxoy.so
编辑配置文件
vi httpd.conf
修改如下
加载模块
LoadModule proxy_module modules/mod_proxy.so (这句是编译激活时产生的)
LoadModule proxy_http_module modules/mod_proxy.so (这句是要手动添加的)
虚拟主机的部分加上
NameVirtualHost *:
<VirtualHost *:>
ServerAdmin webmaster@dummy-host.example.com
ServerName www.a.org
ProxyRequests Off
<Proxy *>
Order deny,allow
Allow from all
</Proxy>
ProxyPass / http://192.168.0.115/
ProxyPassReverse / http://192.168.0.115/
</VirtualHost> <VirtualHost *:>
ServerAdmin webmaster@dummy-host.example.com
ServerName www.b.org
ProxyRequests Off
<Proxy *>
Order deny,allow
Allow from all
</Proxy>
ProxyPass / http://127.0.0.1:9000/
ProxyPassReverse / http://127.0.0.1:9000/
</VirtualHost>
重启apache生效
 
注:
如果不加LoadModule proxy_http_module modules/mod_proxy.so,则浏览器页面打不开,页面显示
Forbidden
You don't have permission to access / on this server.
日志acess_log里面显示
192.168.0.28 - - [/Jun/::: +] "GET /?sessionId=4293567494722637330&rand=1244014624405&CONTEXT=0&page=com.othe
r.AjaxWhoWhatUpdate&xrand=&wwRandId=&wwBugId=&wwType=View HTTP/1.1" 403 315
或者
192.168.0.28 - - [/Jun/::: +] "GET / HTTP/1.1"  
即403错误
日志error_log里面显示
[Wed Jun  :: ] [warn] proxy: No protocol handler was valid for the URL /. If you are using a DSO version of mod_p
roxy, make sure the proxy submodules are included in the configuration using LoadModule.

Apache 做反向代理服务器的更多相关文章

  1. apache做反向代理服务器

    apache代理分为正向代理和反向代理: 1 正向代理: 客户端无法直接访问外部的web,需要在客户端所在的网络内架设一台代理服务器,客户端通过代理服务器访问外部的web(需要在客户端的浏览器中设置代 ...

  2. apache做反向代理

    实验目的 通过apache实现反向代理的功能,类似nginx反向代理和haproxy反向代理 环境准备 逻辑架构如下 前端是apche服务器,监听80端口,后端有两台web服务器,分别是node1和n ...

  3. apache 配置反向代理服务器

    前几天实验了下 nginx 配置反向代理服务器.虽然 nginx 的安装很麻烦,但是用起来倒是很简单.不过组里没人用过 nginx,apache 服务器大家倒是蛮熟,为了减少 ops team 的工作 ...

  4. Node——用http-proxy 做反向代理服务器

    时下不少场景,都是申请一个 VPS 主机来托管运行 Web 项目的,小弟我也不例外——购买了一个小型的 CentOS VPS 使用着.在使用的过程中,面临一个问题,就是同一类型的服务端环境还好——但如 ...

  5. Apache配置反向代理、负载均衡和集群(mod_proxy方式)

    Apache配置负载均衡和集群使用mod_jk的方式比较多,但是mod_jk已经停止更新,并且配置相对复杂.Apache2.2以后,提供了一种原生的方式配置负载均衡和集群,比mod_jk简单很多. 1 ...

  6. Apache 如何反向代理tomcat并且实现Session保持

    简介 LAMT=Linux+Apache+MySQL+Tomcat: Tomcat 服务器是一个免费的开放源代码的Web 应用服务器,属于轻量级应用服务器: 在中小型系统和并发访问用户不是很多的场合下 ...

  7. apache反向代理服务器

    1 正向代理: 客户端无法直接访问外部的web,需要在客户端所在的网络内架设一台代理服务器,客户端通过代理服务器访问外部的web(需要在客户端的浏览器中设置代理服务器) 适用于: ①局域网的代理服务器 ...

  8. 【Nginx】使用Nginx做反向代理时,关于被代理服务器相应的超时设置

    > 参考的优秀文章 Module ngx_http_proxy_module > 设置等待被代理服务器的最大响应时间 使用Nginx做反向代理时,因被代理服务器因业务确实复杂,需时较久,往 ...

  9. 在Centos7中创建.net core 项目,并用Apache做代理服务器部署.net core项目

    这一篇实例记录一次用Centos7创建并部署.net core项目的过程,希望能帮到用到的小伙伴. Kestrel 是 ASP.NET Core 项目模板中包括的默认 Web 服务器,Kestrel可 ...

随机推荐

  1. SICP 习题1.16-1.19体会

    首先反思一下, 昨天做1.14的时候犯了一个严重错误.思维定式了,导致花了非常多无用功. 1.14的关键是要想到2个物理意义. 一个是广度优先, 也就是仅仅考虑问题递归树的第一层子数.那么必定有公式 ...

  2. 利用 Gearman 实现系统错误报警功能

    Gearman 是什么? Gearman是一个用来把工作委派给其他机器.分布式的调用更适合做某项工作的机器.并发的做某项工作在多个调用间做负载均衡.或用来在调用其它语言的函数的系统. Gearman ...

  3. PHP统计所有字符在字符串中出现的次数

    <?php //统计字符串中出现的字符,出现次数 echo '<pre>'; $str = 'aaabbccqqwweedfghhjffffffffggggggggg';//字符串示 ...

  4. 约瑟夫环问题的链表解法和数学解法(PHP)

    约瑟夫环问题 一群猴子排成一圈.按1,2,-,n依次编号.然后从第1仅仅開始数,数到第m仅仅,把它踢出圈.从它后面再開始数,再数到第m仅仅.在把它踢出去-.如此不停的进行下去.直到最后仅仅剩下一仅仅猴 ...

  5. 网页设计——Dreamweaver

    在看ASP.NET视频时,讲到了一款编写HTML代码的软件--Dreamweaver.它是一款专门进行网页设置的软件.通过它能够设计出多彩的界面,相对于vs中自带的设计方式来说,他不须要知道太多的技术 ...

  6. Eddy's picture

    Eddy's picture Time Limit : 2000/1000ms (Java/Other)   Memory Limit : 65536/32768K (Java/Other) Tota ...

  7. day63-webservice 11.cxf整合spring

    如果我们有Spring配置文件,怎么把WebService整合到Spring里面,用Ioc容器来管理这个Bean. 做项目的时候一般都是分层:Dao层.Service层.Service层要调Dao层, ...

  8. Centos 6 搭建邮箱服务器教程

    Centos 6 搭建邮箱服务器主要是是包括了Postfix, Dovecot和 MySQL了,下文我们详细的为各位介绍Centos 6 搭建邮箱服务器教程(Postfix, Dovecot和 MyS ...

  9. jah老师中关于集合的总结

    --------概述:1.Java 集合就像一种容器,可以把多个对象的引用放入容器中 2.Java 集合类可以用于存储数量不等的多个对象,还可用于保存具有映射关系的关联数组3.Java 集合可分为 S ...

  10. JavaScript的面向对象

    JavaScript的对象 对象是JavaScript的一种数据类型.对象可以看成是属性的无序集合,每个属性都是一个键值对,属性名是字符串,因此可以把对象看成是从字符串到值的映射.这种数据结构在其他语 ...