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 *:80

<VirtualHost *:80>

ServerAdmin [email protected]

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 *:80>

ServerAdmin [email protected]

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.63/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 *:80

<VirtualHost *:80>

ServerAdmin [email protected]

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 *:80>

ServerAdmin [email protected]

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 - - [03/Jun/2009:16:16:27 +0800] "GET /?sessionId=4293567494722637330&rand=1244014624405&CONTEXT=0&page=com.othe

r.AjaxWhoWhatUpdate&xrand=1244016991554&wwRandId=1244014624405&wwBugId=2341&wwType=View HTTP/1.1" 403 315

或者

192.168.0.28 - - [03/Jun/2009:17:10:32 +0800] "GET / HTTP/1.1" 403 315

即403错误

日志error_log里面显示

[Wed Jun 03 17:08:46 2009] [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.

时间: 2024-07-31 03:03:47

apache做反向代理服务器的相关文章

Apache 做反向代理服务器

apache做反向代理服务器 apache代理分为正向代理和反向代理: 1 正向代理: 客户端无法直接访问外部的web,需要在客户端所在的网络内架设一台代理服务器,客户端通过代理服务器访问外部的web(需要在客户端的浏览器中设置代理服务器) 适用于: ①局域网的代理服务器(一般是网关,相当于squid的一般用法) ②访问某个受限网络的代理服务器,如教育网访问某些国外网站需要找代理 2 反向代理: 客户端能访问外部的web,但是不能访问目标web,目标web所在的网络内一台机器充当目标web的代理

apache做反向代理+负载均衡器配置

将Apache作为LoadBalance前置机分别有三种不同的部署方式,分别是: 1 )轮询均衡策略的配置 进入Apache的conf目录,打开httpd.conf文件,在文件的末尾加入: ProxyPass / balancer://proxy/         #注意这里以"/"结尾 <Proxy balancer://proxy> BalancerMember http://192.168.6.37:6888/ BalancerMember http://192.16

apache 配置反向代理服务器

前几天实验了下 nginx 配置反向代理服务器.虽然 nginx 的安装很麻烦,但是用起来倒是很简单.不过组里没人用过 nginx,apache 服务器大家倒是蛮熟,为了减少 ops team 的工作量,我决定使用 apache. 我记得本科时安装过 apache 服务器,当初没有遇到困难.而这次安装却总也安装不成功,公司对机器的权限管理的很严格,我没有 root 权限,没有连接外网权限,编译 apache 时有很多依赖拿不到,最后还是请 ops team 的人帮忙搞定的. 配置 proxy m

nginx如何做反向代理服务器?

远程连接并登录到 Linux 实例. 前提工作: 修改/etc/nginx/nginx.conf 让conf文件调用web.conf配置文件: 最后一行增加 include /etc/nginx/conf.d/web.conf; 执行命令 cd /etc/nginx/conf.d 打开 Nginx 服务配置文件目录. 一.在conf.d下新建一个conf配置文件: 执行命令 vi 您要创建的web.conf 创建域名规则配置文件,如示例中的 vi web.conf. 输入 i 编辑新建的配置文件

apache做代理服务器

apache做代理服务器 apache代理分为正向代理和反向代理 正向代理: 客户端无法直接访问外部的web,需要在客户端所在的网络内架设一台代理服务器,客户端通过代理服务器访问外部的web(需要在客户端的浏览器中设置代理服务器) 适用于: ①局域网的代理服务器(一般是网关,相当于squid的一般用法) ②访问某个受限网络的代理服务器,如教育网访问某些国外网站需要找代理 反向代理: 客户端能访问外部的web,但是不能访问目标web,目标web所在的网络内一台机器充当目标web的代理,客户端直接访

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

阅读目录 > 参考的优秀文章 > 设置等待被代理服务器的最大响应时间 > 参考的优秀文章 Module ngx_http_proxy_module > 设置等待被代理服务器的最大响应时间 使用Nginx做反向代理时,因被代理服务器因业务确实复杂,需时较久,往往超过60秒.而Nginx默认设置超时时间为60秒. 针对这一情况,需修改默认配置.因配置项中涉及超时的选项太多,这里记录一下. 等待被代理服务器的最大响应时间为120秒,需加如下配置: proxy_read_timeout 1

nginx做反向代理+apache

先上个规划图,自己随便画的,大家也随便看看 192.168.1.119为nginx做反向代理并处理静态页面,apache处理动态页面,nfs共享网站家目录,svn代码管理. 192.168.101为apache处理动态页面,挂载192.168.1.119的共享目录. 192.168.1.96为mysql数据库,允许两台web服务的连接权限. 系统使用centos6.5 一,配置192.168.1.119 1.首先在192.168.1.119上安装nginx+apache+php+nfs+svn

Tomcat:利用Apache配置反向代理、负载均衡

Apache 反向代理.负载均衡 准备工作 1.  2 个tomcat实例 2.  安装Apache server2.2 基于apache server配置反向代理 在这个配置中,只使用到了apache server,没有使用到tomcat. 1)  ${apacheserver}/conf/extra/httpd-vhosts.conf在配置一个使用反向代理的虚拟主机 <VirtualHost *:80> ServerAdmin [email protected] ServerName ww

Nginx搭建反向代理服务器过程详解 - Windows

本文主要是Nginx做一个简单的反向服务器代理和静态文件缓存. 反向代理(Reverse Proxy)方式是指以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给internet上请求连接的客户端,此时代理服务器对外就表现为一个服务器 我们就开始动手吧. 1. Vistudio 创建两个简单的 WebApplication (Web Forms),一个叫WebApplication1,一个叫 WebApplication2. 为了区别