[l转:http://www.micmiu.com/enterprise-app/server/apache-proxy-demo/]
Apache HTTP Server(简称Apache)是Apache软件基金会的一个开放源码的网页服务器,可以在大多数计算机操作系统中运行,由于其多平台和安全性被广泛使用,是最流行的Web服务器端软件之一。
Apache是通过加载各个模块来提供相应的服务,本文主要详细介绍如何利用apache配置代理服务器。当然Apache可以被配置为正向(forward)和反向(reverse)代理,下面分别从这两方面重点介绍:
示例环境为:windows vista+apache2.2.19,以下配置亲测均通过
一、正向代理forward proxy
[1]、概念及用途
正向代理是一个位于客户端和目标原始服务器之间的服务器,为了从原始服务器取得内容,客户端向代理发送一个请求并指定目标原始服务器,然后代理向原始服务
器转交请求并将获得的内容返回给客户端。客户端必须要进行一些特别的设置才能使用正向代理,比如我们经常需要在浏览器中设置代理来访问一些网站。
正向代理的典型用途是为在防火墙内的局域网客户端提供访问Internet的途径。正向代理还可以使用缓冲特性(由mod_cache提供)减少网络使用率。
[2]、配置及演示
打开文件conf/httpd.conf,搜索到以下内容,去掉注释加载相应模块(去掉前面的“#”即可)
1 |
LoadModule proxy_module modules/mod_proxy.so |
2 |
LoadModule proxy_http_module modules/mod_proxy_http.so |
在文件httpd.conf的末尾加上如下内容:
1 |
# module proxy config file |
2 |
Include conf/extra/httpd-proxy.conf |
下一步,创建文件conf/extra/httpd-proxy.conf,内容如下:
1 |
#michale proxy config file |
2 |
<IfModule mod_proxy.c> |
3 |
#Forward Proxy(正向代理)
|
4 |
ProxyRequests On
|
5 |
ProxyVia On
|
6 |
7 |
#允许本机和以192.168.8前缀IP的主机访问该代理
|
8 |
<Proxy *>
|
9 |
#注意Deny,Allow之间不要有空格
|
10 |
Order Deny,Allow
|
11 |
Deny from all
|
12 |
Allow from 127.0.0.1 192.168.8
|
13 |
</Proxy>
|
14 |
15 |
#下面的配置相当于一个二级代理,访问twitter.com的请求,再转给本地代理8580端口
|
16 |
ProxyRemote http://twitter.com/ http://127.0.0.1:8580
|
17 |
#ProxyRemoteMatch .*.youtube.com/|.*.twitter.com/ http://127.0.0.1:8580
|
18 |
</IfModule> |
[3]、缓存cache配置
在文件httpd-proxy.conf中增加如下配置信息:
1 |
LoadModule cache_module modules/mod_cache.so |
2 |
3 |
<IfModule mod_cache.c> |
4 |
5 |
LoadModule disk_cache_module modules/mod_disk_cache.so
|
6 |
<IfModule mod_disk_cache.c>
|
7 |
CacheRoot d:/proxycache/
|
8 |
CacheDirLevels 5
|
9 |
CacheDirLength 3
|
10 |
CacheMaxFileSize 1000000
|
11 |
CacheMinFileSize 64
|
12 |
</IfModule>
|
13 |
CacheEnable disk /
|
14 |
CacheDefaultExpire 3600
|
15 |
CacheMaxExpire 86400
|
16 |
17 |
# When acting as a proxy, don't cache the list of security updates
|
18 |
#CacheDisable /local_files
|
19 |
20 |
CacheIgnoreCacheControl On
|
21 |
CacheIgnoreHeaders Set-Cookie
|
22 |
23 |
</IfModule> |
相关配置属性的详细信息请查阅参考手册,如果缓存配置成功,访问页面后会在目录d:/proxycache/ 下生成一系列文件夹和文件
二、反向代理reverse proxy
[1]、概念及用途
反向代理正好相反,对于客户端而言它就是原始服务器,并且客户端不需要进行任何特别的设置。客户端向反向代理的命名空间中的内容发送普通请求,接着反向代理将判断向原始服务器转交请求,并将获得的内容返回给客户端,就像这些内容原本就是它自己的一样。
反向代理的典型用途是将防火墙后面的服务器提供给Internet用户访问。反向代理还可以为后端的多台服务器提供负载平衡,或为后端较慢的服务器提供缓冲服务。另外,还可以启用高级URL策略和管理技术,从而使处于不同web服务器系统的web页面同时存在于同一个URL空间下。
[2]、配置及演示
把上面正向代理中的配置文件:conf/extra/httpd-proxy.conf,修改成如下内容:
1 |
<IfModule mod_proxy.c> |
2 |
#Reverse Proxy(反向代理)
|
3 |
<Proxy *>
|
4 |
Order Deny,Allow
|
5 |
Deny from all
|
6 |
Allow from 127.0.0.1 192.168.8
|
7 |
</Proxy>
|
8 |
9 |
ProxyRequests Off
|
10 |
#proxy setting
|
11 |
ProxyPass /svnman http://192.168.8.49:8080/svnman
|
12 |
ProxyPassReverse /svnman http://192.168.8.49:8080/svnman
|
13 |
#此处项目名称/svnman代理时没有变化,session不会丢失,不需要配置下面的属性
|
14 |
#ProxyPassReverseCookiePath /svnman /svnman
|
15 |
16 |
#可以配置多反向代理,添加多对ProxyPass、ProxyPassReverse即可
|
17 |
ProxyPass /log http://192.168.8.7:8550/logman
|
18 |
ProxyPassReverse /log http://192.168.8.7:8550/logman
|
19 |
#此处项目名称/logman代理时为/log,需要配置如下信息,否则session会丢失
|
20 |
ProxyPassReverseCookiePath /logman /log
|
21 |
22 |
#配置跟代理,必需放在最后面,否则其他二级访问的反向代理会失败
|
23 |
ProxyPass / http://127.0.0.1:8082/webdemo/
|
24 |
ProxyPassReverse / http://127.0.0.1:8082/webdemo/
|
25 |
#此处项目名称 /webdemo/ 代理为 / 跟目录访问,session会丢失,需要配置如下信息
|
26 |
ProxyPassReverseCookiePath /webdemo /
|
27 |
28 |
</IfModule> |
注意点说明:
- ProxyRequests 反向代理时设置为Off
- ProxyPass、ProxyPassReverse配对出现,如果只配置了ProxyPass,那么浏览器的地址栏内容会变成反向代理的原始地址
- 可配置多个反向代理,只要添加多对ProxyPass、ProxyPassReverse即可
- 如果配置时项目名称变化了比如上面的 /logman->/log /webdemo/->/,此时的session会丢失,需要增加属性ProxyPassReverseCookiePath配置(如上面的配置文件)
- 如果同时配置跟访问和二级访问的代理,跟目录代理的配置必须放在最后面,否则其他反向代理的配置会失败
三、启动异常处理方法
配置文件修改后,如果启动pache服务失败,报错信息类似:the requested operation has failed,有可能是配置文件存在语法错误不能正常解析,可以用apaceh提供的httpd相关命令检查,如果有错误会有相关提示,具体用法如下:
1 |
d:\Program Files\Apache2.2\bin>httpd -t |
2 |
Syntax error on line 6 of D:/Program Files/Apache2.2/conf/extra/httpd-proxy.conf: |
3 |
order takes one argument, 'allow,deny' , 'deny,allow' , or 'mutual-failure'
|
4 |
#此处是由于配置文件中allow, deny的逗号后多了空格,去掉后即可通过 |
5 |
D:\Program Files\Apache2.2\bin>httpd -t |
6 |
Syntax OK |
如果语法检查通过,但是仍然启动失败,这时需要根据日志文件:logs/error.log中记录的错误信息具体分析了。
相关推荐
apache代理服务器,包含二级代理的配置
Apache代理转发配置
Apache 流媒体配置模版,供以后参考,包括Alias等内容
Linux 下安装 Apache 及反向代理配置完整过程 Linux 操作系统下安装 Apache 服务器是一件复杂的任务,需要逐步完成多个步骤。本文将详细介绍 Linux 下安装 Apache 及反向代理配置的完整过程。 安装 Apache 安装 ...
windows下配置Apache双向认证和反向代理(Apache+配置文档)
linux apache反向代理配置,写的有点乱,但是可以用,里面有说明文档 先弄 apache和tomcat整合 把80端口给apache 举例 tomcatA 8080 tomcatB 8081 在apache的httpd.conf里写反向代理,用户名指向tomcat的端口,具体...
本文将深入探讨如何配置Apache代理Tomcat进行负载均衡,以及如何通过具体的配置参数优化这一过程。 ### Apache代理Tomcat负载均衡配置详解 #### 核心概念解析 在深入配置细节之前,理解几个核心概念至关重要: 1...
【Apache+SSL安全反向代理配置案例】 Apache作为一款广泛应用的开源HTTP服务器,常常被用于构建网站服务。SSL(Secure Socket Layer)则是提供网络安全传输的一种协议,常用于加密通信,确保数据在传输过程中不被...
五、 反向代理配置 在 Apache 服务器上,我们需要配置反向代理转发。首先,需要安装 Apache 模块 mod_proxy: ./configure --prefix=/usr/local/apache --enable-module=proxy 然后,编辑 Apache 配置文件 httpd....
#### 四、多服务器环境下的反向代理配置 如果局域网中有多个服务器(如服务器A、B、C等),并且希望所有这些服务器都能够被外部网络访问,那么可以通过以下步骤实现: 1. **选择一台服务器作为反向代理**:例如...
Apache有许多可选模块,如mod_rewrite用于URL重写,mod_proxy支持反向代理。使用LoadModule指令加载模块,然后在配置文件中启用相关功能。 九、故障排查与监控 1. 使用apachectl或httpd命令行工具进行服务启停、...
apache分发静态资源,反向代理配置,项目中实际应用。
### Apache+Tomcat集群配置详解 #### 基础篇 ##### 1.1 系统部署 在本文档的基础篇中,首先介绍了系统部署的相关步骤。为了搭建一个基于Apache和Tomcat的集群环境,作者提供了以下具体的操作指导: 1. **测试...
### CentOS 下 Apache 配置多域名或多端口映射详解 #### 一、概述 在 CentOS 系统中,Apache 是一个广泛使用的 Web 服务器软件,它可以用来托管多个不同的网站或应用服务。为了实现这一点,我们需要对 Apache 进行...
1. **Apache 配置**:Apache 的配置文件通常位于 `httpd.conf` 中,如文中所示,它定义了服务器的行为和网站的设置。例如,`<VirtualHost>` 块用于定义虚拟主机,`ServerName` 指定主机名,`DocumentRoot` 设置网站...
在 Apache 安装目录下找到 Apache2.2/conf/下的 httpd.conf,去掉以下文本前的注释符,以便让 Apache 在启动时自动加载代理(proxy)模块。 第四步:打开 Apache 的 conf/extra/httpd-vhosts.conf 文件,并在最下面...
windows下apache+tomcat反向代理模式配置负载均衡
介绍如何使用apache进行反向代理的配置,以及配置中遇到的一些问题如何解决
apache http 代理tomcat httpd.conf 里面有我项目的,代理,在文档的最下面几行。都是代理的。