+ -
当前位置:首页 → 问答吧 → Apache可以配置成为代理服务器

Apache可以配置成为代理服务器

时间:2007-08-01

来源:互联网

Apache可以配置成为代理服务器。


  一、前向代理服务器和逆向代理服务器

  1.前向代理服务器

  前向代理服务器通常位于用户主机和要访问的远程网络之间。它从远程服务器
  取得所要求的资源,然后返回给用户,同时存在磁盘上,以供下次使用。

  在这种情况下,客户端的主机知道它们正在使用代理服务器,因为每个主机都
  必须配置为使用代理服务器。

  例如,必须告诉WWW浏览器使用代理服务器,它才能使用代理服务器。所有的远
  程请求都通过代理服务器传输。

  这类代理服务器也称为缓冲代理服务器。逆向服务器也可以缓冲数据,但它的
  作用愉好与前向服务器相反。

  2.逆向代理服务器

  逆向代理服务器位于互联网资源前面,逆向服务器从原始服务器找到被请求的
  资源,并反它返回给用户主机。

  与前向代理服务器不同的是,逆向代理服务器的用户并不知道它们连接的是代
  理服务器而不是资源服务器本身。其结构如下图所示:

  二、配置代理服务器


    为了允许Apache作为代理服务器,需要将ProxyRequests设为On,然后根据
  你希望代理服务器做什么而增加什么附加配置。无论你希望做什么,你所选的
  代理配置都应该放入一个特殊?lt;Directory>容器中。


  <Directory proxy:*>

  …

  </Directory>

  实例一:将私有IP网连到互联网

  假设私有网上只有一台计算机被分配了互联网上合法的IP地址,这台计算

  机运行Apache代理服务器,ProxyRequest设置为On,并且不需要附加其他配
  置,所有请求均可由这台代理服务器代理服务。

  实例二:让Apache允当远程WWW站点的缓冲

  第一步:将ProxyRequest设置为On

  第二步:创建配置如下:

  <Directory proxy:*>

  CacheRoot /www/cache

  CacheSize 1024

  CacheMaxExpire 24

  </Directory>

  这里的意思是设置Cache目录为/www/cache;大小为1024KB,即1MB;缓冲中的
  内容在24小时后失效。

  实例三:建立镜像站点(其实这也就是所谓的逆向代理服务器)

  第一步:将ProxyRequest设置为On

  第二步:创建配置如下:

  <Directory proxy:*>

  ProxyPass / www.mot.com /

  CacheRoot /www/cache

  CacheDefaultExpire 24

  </Directory>

  10.3 一些提示

  代理服务器,我们将会在后面的章节中详细介绍,这里只是针对Apache的功能
  介绍的。用Apache作代理服务器的性能并不高,效果并不好。不建议使用。

  安�b Apache+PHP+MySQL+imap+GD+Ldap+opens

  注意事项:

  1.如果��是用 Redhat based 的 Linux 的话,请执行 ntsysv 将 httpd 和
  1.Mysql 不要执行

  2.将 DOWNLOAD 的档案放到相同的目录,再用 tar zxvf xxxxxxxx.tar.gz 来
  2.解压缩,请依照要安装的软件进入适当的目录。

  3.可以到 http://linuxnews.idv.tw/download/ 来下载所需的程序。

  MySQL:

  ---------------------------------------------------------------

  ./configure --prefix=/usr/local/mysql --with-charset=big5

  make

  make install

  cd scripts

  ./mysql_install_db

  cd /usr/local/mysql/share/mysql/

  chmod 611 mysql.server

  ./mysql.server start

  #编辑 /etc/rc.d/rc.local 加入底下这行以便开机时自动执行 mysql

  /usr/local/mysql/share/mysql/mysql.server start

  imap:

  ---------------------------------------------------------------

  make slx

  cp ipopd/ipop*.* /usr/sbin

  cp imapd/imapd /usr/sbin

  cp c-client/c-client.a /usr/local/lib

  #请确定你有 /usr/local/include 这个目录

  cp c-client/rfc822.h /usr/local/include

  cp c-client/mail.h /usr/local/include

  cp c-client/linkage.h /usr/local/include

  GD:

  ---------------------------------------------------------------

  make

  make install

  Ldap:

  ---------------------------------------------------------------

  ./configure --prefix=/usr/local/ldap

  make

  make depend

  cd tests

  make

  cd ..

  make install

  Apache:

  ---------------------------------------------------------------

  ./configure --prefix=/usr/local/apache

  openssl:

  ---------------------------------------------------------------

  ./config

  make

  make test

  make install

  mod_ssl:

  ---------------------------------------------------------------

  ./configure --with-apache=../apache_1.3.19
  --with-ssl=../openssl-0.9.6 --prefix=../apache_1.3.19

  php:

  ---------------------------------------------------------------

  ./configure --with-mysql=/usr/local/mysql
  --with-apache=../apache_1.3.19 --enable-track-vars
  --with-gd=../gd-1.8.4 --with-imap=../imap-4.7c --enable-ftp
  --with-ldap=/usr/local/ldap

  make

  make install

  Apache:

  ---------------------------------------------------------------

  ./configure --prefix=/usr/local/apache
  --activate-module=src/modules/php4/libphp4.a --enable-module=ssl

  make

  make certificate

  #这时会问你一些问题,就是有关于加密的问题,最后要要求输入启动的密码,
  如果输入密码的话以后启动 httpd 的时候会询问密码,若不输

  #入密码的话启动就不会问了

  #PS.启动http

  #要加密:apachectl startssl

  #不加密:apachectl start

  make install

  修改 /etc/rc.d/rc.local 加入 /usr/local/apache/bin/apachectl start 来
  开机时自动启动 Apache

  再来就是修改 /usr/local/apache/conf/httpd.conf 的设定档,将 php 的支
  持加入

  建立Apache站点的基本安全机制

  对于WWW服务来说,在WWW服务器和WWW浏览器之间并不始终维持对话过程。办要
  WWW服务器完成对一个URL请求的服务,连接就断开了。

  在这种情况下,在WWW上保证可以使用的唯一认证机制是由HTTP本身提供 的。
  在标准的Apache服务器实现了这样的认证,它能控制哪些主机可能访问特定的
  站点或特点的站点的一部分。

  这种认证可以分为两种,一种是基于主机的的认证,另一种是基于用户名/口令
  的认证。由于互联网上的决大多数用户的IP地址是动态获得的,所以基于主机
  的认证方式并不总适用。所以在大多数情况下,传统的基于用户名/口令的认证
  方式更为现实。下面我们就对这两种认证的实现做一简要的介绍。

  1. 基于主机的认证方式

  在种认证模式顾名思义,访问是用主机名或主机IP地址来控制的。支持这种认
  证方式的是Apache的mod_access模块,这个模块缺省状态下是被安装了的。该
  模块用以下几种Apache命令来提供访问控制功能。

  allow命令

  语法:allow from host1 host2 host3 ...

  这个命令定义了允许访问站点或目录的主机清单。主机清单可以用以下几

  种形式表示:

  ALL:代表所有主机;

  主机的全域名,www.mot.com;

  主机的部分域名,如:.mot.com;

  完整的IP地址,如:202.98.2.32;

  部分IP地址,如:202.98

  网络地址/网络掩码对,如:202.98.0.0/255.255.0.0

  网络地址/nn(CIDR定义),如:202.98.0.1/16

  deny命令

  语法:deny from host1 host2 host3 ...

  这个命令定义了禁止访问站点或目录的主机清单,其他与allow命令相似。

  order命令

  语法:order deny,allow | allow,deny

  这个命令定义评价allow和deny命令的先后顺序。

  例如:

  <Directory /home/httpd/html>

  order deny,allow

  deny from www.mot.com

  allow all

  </Directory>

  这组命令设置了www.mot.com访问/home/httpd/html目录下的文件。

  请大家注意,顺序是先deny后allow,如果是:order allow,deny 那么,先允
  许所有的主机访问,然后再禁止,这样是无效的,所有主机仍然能够访问。

  2. 基于用户名/口令的认证方式

  这种认证方式其实相当简单,当WWW浏览器请求经此认证模式保护的URL

  时,将会出现一个对话框,要求用户键入用户名和口令。用户输入后,传给
  WWW服务器,WWW服务器验证它的正确性,如果正确,返回页面,否则返回401错
  误。要说明的一点是,这种认证模式是基本的,并不能用于安全性要求极高的
  场合。

  Apache 中有许多模块可以支持这种认证方式,下面我们就介绍一下最基本、最
  标准的mod_auth模块。正如前面提到的一样,mod_auth模块使用存储在文本文
  件中的用户名、组名和口令来实现认证。这种方法非常适合处理少量用户,它
  能工作得很好。如果你需要对大量的用户,如数以千计的用户做认证时,这种
  方法的性能将急剧下降到不可忍受,所以当这种情况下,就需要考虑使用
  mod_dbm模块或mod_mysql模块来获得更好的性能。

  实例一:需要用户名和口令的访问控制

  下面我们就一起来看一下如何建立需要用户名/口令才能进行访问的目录。

  基本情况: www.xxx.com

  的站点有设置为:

  DocumentRoot /home/httpd/html

  AccessFileName .htaccess

  AllowOverride All

  需求:限制/home/httpd/html/backup/目录的访问,只允许用户"super"以口令
  "fill-06"访问此目录。

  实现步骤:

  使用htpasswd建立用户文件

  htpasswd -c /home/httpd/secr/.htpasswd super

  此程序会询问用户"super"的口令,你输入"fill-06",两次生效。

  建立.htaccess文件

  用vi在/home/httpd/html/backup/目录下建立一个文件.htaccess,写入

  以下几行:

  AuthName My Friend Only (注:这个名字是任取的)

  AuthType Basic

  AuthUserFile /home/httpd/secr/.htpasswd

  require user super

  设置文件权限,确保Apache用户有读的权限

  这样就完成了设置工作,你可以试一试效果了。

  实例二:允许一组用户访问一个目录

  假设,www.xxx.com想让myfriend组中的mf1与mf2两个用户分别能

  使用口令"mf001-1""mf002-2"访问/home/httpd/html/backup/目录。

  实现步骤:

  使用htpasswd建立用户文件

  htpasswd -c /home/httpd/secr/.htpasswd mf1

  htpasswd -c /home/httpd/secr/.htpasswd mf2

  建立组文件

  用vi/home/httpd/secr/目录下建立一个文件.htgroup,写入:

  myfriend:mf1 mf2

  建立.htaccess文件

  用vi在/home/httpd/html/backup/目录下建立一个文件.htaccess,写入

  以下几行:

  AuthName My Friend Only

  AuthType Basic

  AuthUserFile /home/httpd/secr/.htpasswd

  AuthGroupFile /home/httpd/secr/.htgroup

  require group myfriend

  配置工作到此结束,试一试吧!

  实例三:混合使用基于主机与基于用户名/口令的认证方式

  如果你除了只允许让mf1与mf2两个用户访问外,还想禁www.mot.com

  外的主机访问这个目录的话,就将/home/httpd/html/backup/.htaccess修改成
  为:

  AuthName My Friend Only

  AuthType Basic

  AuthUserFile /home/httpd/secr/.htpasswd

  AuthGroupFile /home/httpd/secr/.htgroup

  require group myfriend

  order deny,allow

  deny from all

  allow from www.mot.com

作者: 逆雪寒   发布时间: 2007-08-01

作者: fengyun   发布时间: 2007-08-01

学习一下

作者: xiaojia   发布时间: 2007-08-01

热门下载

更多