一、测验环境与网络结构
本文所运用的测验环境是Redhat Linux 7.2、Apache 1.3.24,公司域名假设是company.com。公司的典型网络结构如附图所示。
Linux防火墙上的Apache反向署理
留意: 附图中的防火墙上装置了2块网卡,其间e0端口的外部公共地址为1.2.3.4,e1端口对应内部保存地址为192.168.2.1。局域网内部有3台 Web服务器A、B和C,它们对应的域名分别为weba.company.com、webb.company.com和 webc.company.com,均运用内部保存地址。
二、操作过程
如附图所示,此公司经过专线连入互联网,装置了防火墙,局域网内部有3台Web服务器,均只要内部保存地址,可是期望他们能够供给对外的Web服务。
1.设置DNS
在防火墙(一起也是公司的DNS服务器)上设置内部3台Web服务器的DNS,IP地址均为1.2.3.4。这样,在Internet上解析 weba.company.com、webb.company.com 和webc.company.com时,均指向同一IP地址即防火墙的外部接口地址1.2.3.4。
2.下载Apache
从Apache网站(http://www.apache.org)下载现在最新的版别apache 1.3.24到/root目录,下载地址为http://www.apache.org/dist/httpd/apache_1.3.24.tar.gz。
3. 更改源代码使最大答应的恳求衔接数超越256
因为Apache默许答应的最多衔接数为256,而在一个繁忙的网站上这一衔接数量或许不能满足需求,特别是本文介绍的经过防火墙上的 Apache反向署理答应外部用户拜访多个内部Web服务器的状况,能够选用更改src/include/httpd.h文件的办法,具体过程如下。
#cd/root 切换目录到/root下
#tar xvfz apache_1.3.24.tar.gz 解开apache源文件到/root下 #cd apache_1.3.24 进入apache_1.3.24目录
#vi src/include/httpd.h 用vi修正httpd.h文件
在输入“vi src/include/httpd.h”指令后,持续输入“/256”并按“回车”键查找数字256,将其改为1024后保存并退出即可。
留意事项:
①要支撑最多为1024个客户的一起恳求,不只需求更改上面说到的源文件,在编译装置后还需求设置/usr/local/apache/conf/httpd.conf文件,将其间的“MaxClients”一行后边的参数更改为“1024”。
②假如您只是为了进行测验,或许不会有很多人运用,能够不修正httpd.h文件。
4. 编译Apache
编译代码如代码1所示。
代码1
#cd apache_1.3.24
#./configure –prefix=/usr/local/apache
–enable-module=most
–enable-shared=max
–enable-module=proxy
–enable-shared=proxy
–enable-module=rewrite
–enable-shared=rewrite 设置装置默许目录
编译大多数模块
设置模块为DSO(动态同享目标)形式
发动署理模块
装置署理模块为DSO形式
发动重写功用模块
装置重写功用模块为DSO形式
留意: 在编译Apache的时分,有必要编译大多数模块,并将它们设置为DSO形式,一起发动proxy和rewrite模块,一起也将其设置为DSO形式。
#make
#make install
将装置一切Apache所需文件到/usr/local/apache目录下。
5.在httpd.conf文件中设置依据域名的虚拟主机
在/usr/local/apache目录找到httpd.conf文件,并将下面的内容添加至此文件后。
NameVirtualHost 1.2.3.4:80
VirtualHost 1.2.3.4:80 >
ServerAdmin root@company.com
DocumentRoot /usr/local/apache/htdocs
ServerName default.company.com
ErrorLog /usr/local/apache_http/logs/error_log
CustomLog /usr/local/apache_http/logs/access_log combined
UseCanonicalName Off
ProxyRequests Off
RewriteEngine on
RewriteCond %{HTTP_HOST}.*.company.com$
RewriteRule ^/(.*)$ http://%{HTTP_HOST}/$1 [P,L]
/VirtualHost >
留意事项:
①上面设置了依据域名的反向署理虚拟主机,这样当您从外部拜访IP地址为1.2.3.4的主机,且URL地址后边部分的域名为“company.com”,Apache就能够把用户的恳求转发到局域网内部的Web服务器上,并重写呼应数据包去掉署理协议部分。
②“ServerName”一行能够恣意指定。
③“ProxyRequest Off”一行用来制止Apache在IP地址为1.2.3.4的主机和端口80上进行署理服务,在这里Apache作为一个通明的署理服务器来运用。
④“RewriteEngine on”一行用来发动Apache修正呼应数据包的功用,不然下面的“RewriteCond”和“RewriteRule”将不起作用。 6.添加记载进入/etc/hosts文件
在上面的虚拟主机重写规矩中,重写后的URL与您所恳求的URL是相同的,咱们的想象是将下面3个域名放到防火墙的/etc/hosts文件中,这样Apache将从内部3台Web服务器取得内容,并回来给外部用户,域名对应记载如下。
192.168.2.2 weba.company.com
192.168.2.3 webb.company.com
192.168.2.4 webc.company.com
三、总结
这样,当外部用户拜访http://weba.company.com时,恳求被送到防火墙的Apache上,而防火墙上的Apache反向署理将依据/etc/hosts文件中界说的记载直接从IP地址为192.168.2.2的Web服务器获取内容并回来给外部用户,然后完结内部Web服务器weba.company.com对外供给拜访的功用。
在对Apache装备结束后,假如还需求添加更多的内部Web服务器来供给外部拜访服务,只需设置其DNS服务器的IP地址为1.2.3.4,并在/etc/hosts文件中添加相应记载即可。