众所周知Apache是目前最优秀的HTTP服务器。实际上它不仅能当作服务器使用,也能够被用来架设代理服务器。本文就如何使用Apache架设HTTP代理服务器进行说明。

本文将基于Win32版的Apache 2.0.47进行说明。以前的Apache 1.x版配置方法稍有不同,但这里不作说明。

首先是Apache的安装。从 http://www.apache.org 上下载Apache的安装程序,双击安装程序进行安装。安装好之后屏幕右下方系统托盘中会出现一个红色的羽毛状图标,那就是Apache的控制程序。单击此图标以启动Apache服务器。这时打开IE并在IE的地址栏中输入http://localhost/ 应当能够看到Apache的欢迎画面。

接下来我们修改Apache的配置文件使其支持HTTP代理服务器功能。用文本编辑器打开httpd.conf文件。该文件位于Apache安装目录的conf目录下。如果你在安装Apache的时候没有改变安装路径,那么它应当位于C:/Program Files/ApacheGroup/Apache/conf/httpd.conf。

首先要添加代理服务器模块。找到下面这几行:

#LoadModule proxy_module modules/mod_proxy.so#LoadModule proxy_connect_module modules/mod_proxy_connect.so#LoadModule proxy_http_module modules/mod_proxy_http.so#LoadModule proxy_ftp_module modules/mod_proxy_ftp.so

去掉前面的#号使相应的模块生效。然后使用托盘中的Apache控制程序重新启动Apache。(也可以使用命令行net stopapache2然后net start apache2命令进行服务器重启。)这时Apache应该能够正常启动,虽然现在它还不是代理服务器。

然后我们在配置文件中加入下面这一行:

ProxyRequests   On

然后再次重新启动Apache。这时Apache就是HTTP代理服务器了。打开IE,选择菜单“工具→Internet选项→连接→局域网设置”,选中“为LAN使用代理服务器”,然后在下方的地址中填入127.0.0.1,端口填写80。填好之后确定,此时如果能够通过IE连接到Internet,则说明代理配置正确无误。(注:此处的端口80是httpd.conf中Listen指令指定的端口号。如果你修改了Listen命令使Apache监听其他端口,那么在IE的设置中也请做相应的改变。另外,如果你使用拨号连接的话,那么请在“工具→Internet选项→连接”中修改相应的拨号连接的代理设置,而不要修改局域网代理设置)

接下来我们尝试一下访问控制。编辑httpd.conf,加入下面的设置:

<Proxy *>Order allow,denyAllow from allDeny from 127.0.0.1</Proxy>

此配置的意思是,允许除本地计算机之外的所有计算机访问代理。然后重新启动Apache。再次试图使用IE连接Internet,你会收到类似于下面的信息:

ForbiddenYou don't have permission to access http://www.google.com/ on this server.

说明本地计算机已经被禁止使用代理。而相反地,下面的设置:

<Proxy *>Order deny,allowDeny from allAllow from 127.0.0.1</Proxy>

的意思是,仅允许本地计算机使用代理服务器。

Proxy指令后面的*号表示客户端使用代理服务器访问的目的地址。在上面两个例子中,*号表示所有地址,即禁止使用代理服务器访问所有地址。而如果想仅禁止某一些地址时,可以参考下面的例子:

<Proxy http://www.google.com/>Order deny,allowDeny from allAllow from 127.0.0.1</Proxy><Proxy http://www.yahoo.co.jp/r/*>Order allow,denyAllow from allDeny from 127.0.0.1</Proxy>

上面这个例子的意思是,仅允许本地计算机访问http://www.google.com/,并且禁止本地计算机对于http://www.yahoo.co.jp/r/下的资源的访问。由于Apache的Proxy指令目前还不能够支持多个目标地址,也就是说不能写成<Proxy http://www.google.com/ http://www.yahoo.co.jp>的形式,因此如果你想对多个目标地址做出限制时,必须使用多个Proxy指令。

如果想对所有使用者(而不仅仅是部分使用者)访问某些地址做出限制时,可以使用ProxyBlock的指令:

ProxyBlock microsoft co.jp www.google.com

上面这条指令阻挡了三种目标地址:包含microsoft的地址,包含co.jp的地址,包含www.google.com的地址。但是实际使用IE测试时你会发现,http://www.google.com/和http://www.google.co.kr/(Google韩国站)将都不能访问,而http://www.google.co.kr/并没有满足上面阻挡的规则。这是因为,Apache启动时将对阻挡地址中看起来像是主机名或者域名的字符串进行域名解析,如果解析成功就阻止掉相应的目标IP地址。而www.google.co.kr和www.google.com的IP地址相同,因此www.google.co.kr也同时被阻挡了。另外,由于Apache试图去解析域名,因此当你使用ProxyBlock时,Apache的启动时间会变长。

另外要注意,如果写ProxyBlock *,那么将不能通过该代理服务器来访问任何地址。

最后再介绍一下二级代理。使用Apache可以做二级代理,即让本身已经是代理服务器的Apache通过其他的代理服务器来连接Internet。加入以下指令:

ProxyRemote * http://12.34.56.78:8080

即可让Apache将12.34.56.78:8080作为代理服务器。ProxyRemote指令之后的第一个参数表示协议名称或目标地址,例如:

ProxyRemote ftp http://12.34.56.78:8080    # 对于所有ftp请求使用二级代理ProxyRemote http://www.google.com/ http://12.34.56.78:8080    # 当访问www.google.com时使用二级代理

基于Apache的反向代理服务器相关推荐

  1. apache反向代理服务器

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

  2. 详细分析 apache httpd 反向代理的用法

    代理方式有两种:正向代理和反向代理. 正向代理是为客户端转发请求,各客户端将请求交给正向代理服务器,正向代理服务器再负责转发给服务端,响应时服务端先响应给正向代理服务器,正向代理服务器再转发给对应的客 ...

  3. 基于nginx实现反向代理

    准备工作:关闭虚拟机防火墙,selinux,关闭物理机防火墙,关闭物理机的代理. 第一步:配置上游服务器(这里用apache) 1.安装apache # yum install httpd -y 2. ...

  4. Nginx server之Nginx作为反向代理服务器

    2019独角兽企业重金招聘Python工程师标准>>> 一:Nginx介绍 1.Nginx简介:nginx [engine x]是一个俄罗斯人编写的HTTP和反向代理服务器,另外它也 ...

  5. Nginx----web服务器,反向代理服务器

    一. Nginx介绍 1.1 什么是Nginx? Nginx是一款轻量级的Web 服务器.反向代理服务器及电子邮件(IMAP/POP3)代理服务器,中国大陆使用nginx网站用户有:百度.京东.新浪. ...

  6. nginx(http 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器)与tomcat服务器

    前言 为毛要用nginx服务器代理,不直接用tomcat 7.0,还做多了一次接请求? 这个是我想问的,公司的新项目是要用Nginx+tomcat7+jdk开发的,用户命名可以直接访问tomcat,为 ...

  7. 如何在 FreeBSD 10.2 上安装 Nginx 作为 Apache 的反向代理

    如何在 FreeBSD 10.2 上安装 Nginx 作为 Apache 的反向代理 Nginx 是一款自由开源的 HTTP 和反向代理服务器,也可以用作 POP3/IMAP 的邮件代理服务器.Ngi ...

  8. 【大型网站技术实践】初级篇:借助Nginx搭建反向代理服务器

    一.反向代理:Web服务器的"经纪人" 1.1 反向代理初印象 反向代理(Reverse Proxy)方式是指以代理服务器来接受internet上的连接请求,然后将请求转发给内部网 ...

  9. squid之反向代理服务器

    代理服务器是使用非常普遍的一种将局域网主机联入互联网的一种方式,使用代理上网可以节约紧缺的IP地址资源,而且可以阻断外部主机对内部主机的访问,使内部网主机免受外部网主机的***.但是,如果想让互联网上 ...

最新文章

  1. vue国际化-vue-i18n的配置
  2. 11.2 计算机保护条例解读
  3. [当人工智能遇上安全] 7.基于机器学习的安全数据集总结
  4. 操作系统(5) 并发控制(1)线程的互斥
  5. 第10课 skymvc 企业网站制作
  6. 这个春天有点冷,2019年互联网公司裁员清单大全(更新)
  7. 联通手机卡欠费了无法转接人工服务?
  8. 芯原股份正式加入UCIe产业联盟
  9. java电表抄表器接口_远程抄表系统接线图和远程抄表电表安装图及实例
  10. 关于BT.709标准
  11. Java中的String的getBytes()方法
  12. Lsyncd:负载均衡之后,服务器的文件双向同步
  13. 绿盟于旸:让阿里安娜火箭爆炸的缓冲区溢出 linkboy语录:tk出品必是精品呵呵
  14. UVA:1600 巡逻机器人
  15. afterlogic webmail lite php,windows内网邮件服务器搭建(hMailserver+ AfterLogic WebMail Lite)
  16. 2021最新 腾讯云从零搭建PHP运行环境
  17. 输出第三个单词c语言,基础c语言问题:要求输入任意单词,输出单词的每个字母后的第三个字母。例如输入yeah,则输出bhdk...
  18. 谈谈常见的“小”bug--From 一亩三分地帖子
  19. BeautfulSoup详解
  20. 关闭中国电信的绿色上网服务

热门文章

  1. 产品经理面试:你的未来规划是什么
  2. jquery 制作二级菜单
  3. 15道变态google面试问题
  4. post请求跳转页面
  5. vmstat、uptime、mpstat-CPU性能调优工具
  6. 自定义view:ProgressBar 前景色、背景色、平滑显示进度(简略版)
  7. mysql8 重启命令_MySQL 8.0 有哪些特别好用的运维便捷命令?
  8. Docker的Flannel网络配置
  9. 基于ssm实践项目的心得
  10. 设置/取消 应用程序始终以管理员身份运行