2005-03-08

SGI图形工作站下使用Apache做代理服务器实例

作者:hzqbbc(黑仔强)中山大学GNU/Linux协会 

笔者一直都管理着一台SGI的图形工作站,该工作站运行的是IRIX Unix系统。由于学院希望院系内的一些教师机器能够出国(教育网内的机器一般是没办法出 国的)因此笔者就打算在IRIX内做一个http/ftp的proxy。
 
 开始想使用squid这个流行的proxy服务器。可是由于IRIX是商业Unix,并没有流行的gcc等编译工具,只有古老的cc而已。即使我安装了
gcc for irix(从sgi的官方下载的)也没办法编译通过。因此考虑到了对各种UNIX平台支持非常良好的apache。 

  apache自1.3版本后开始支持proxy功能,功能模块是mod_proxy。虽然并不如 squid强大,但是占用资源不多,设置方便,容易使用。对于一般使用已经非常足够了。 
  要让apache支持代理功能必须在配置的时候加入--enable-module=proxy指令 。然后正常编译和安装好后,在httpd.conf的结尾地方找到有关proxy的设置,进行相应的修改。 

以下就主要的指令做一些简单说明: 

ProxyRequests 是否允许proxy请求,要做proxy当然是需要on 
Deny/Allow 禁止和允许某些指定ip或者域名,支持通配符 
ProxyRemote 指定远程proxy,这样可以将本proxy设置成子代理服务器 ,请求可以通过指定的远程proxy进行连结(本例中的关键) 
ProxyPass 
可以将远程url映射到主机的url上。例如要将http://abc.com 映射到主机上。那么可以这样做:
 ProxyPass /abc http://abc.com/ 那么访问http://yourhost.com/abc的时候就相当于访问
abc.com 了。这样的指令可以重复使用 
NoProxy 指定域名或者ip不使用proxy功能或者不能使用proxy功能 
CacheRoot 缓冲文件存放的目录 
CacheSize 缓冲的最大尺寸,以KB为单位 
CacheGcInterval 每隔多少小时检查cache,使用默认值就可以了 

  懂得这些基本指令后就可以开始配置了。 

  笔者的目的是让本地其他院系的机器就通过本服务器连结到教育网内可以访问的父代理服务器(www.proxy.net)出国。以下是相应的配置文件: 

<IfModule mod_proxy.c> 
ProxyRequests On 
<Directory proxy:*> 
Order deny,allow 
Deny from all Allow 
from 192.168.6.* 
</Directory> 

ProxyRemote http://www.proxy.net:8080/ 
ProxyPass /cn-ibm http://www.ibm.com.cn/ 

CacheRoot "/www/web/apache/proxy" 
CacheSize 102400 
CacheGcInterval 4 
CacheMaxExpire 24 

 
 以上配置行配置了一个代理服务器,它定义了192.168.6网段内的主机可以使用本服务器,并且通过proxy.net父代理出国。同时将国内的网站
http://www.ibm.com.cn/映射到/cn-ibm 上。缓冲根目录是/www/web/apache/proxy,使用了100MB的
缓冲大小,每隔4小时检查一次缓冲 文件。对于zsu.edu.cn和scut.edu.cn域内的主机不做proxy代理。

没有评论:

发表评论