新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > Linux防火墻上的Apache反向代理

        Linux防火墻上的Apache反向代理

        作者: 時間:2017-06-06 來源:網絡 收藏
          一、測試環境與網絡結構

        本文所使用的測試環境是Redhat 7.2、 1.3.24,公司域名假設是company.com。公司的典型網絡構造如附圖所示。

          上的

        注意: 附圖中的上安裝了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網站(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后保存并退出即可。

        本文引用地址:http://www.104case.com/article/201706/349436.htm
          注意事項:

        ①要支持最多為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文件中增加相應記錄即可。


        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 连江县| 泾川县| 保康县| 高密市| 安陆市| 凉山| 西畴县| 金华市| 浦北县| 滦平县| 罗源县| 珠海市| 田阳县| 吴忠市| 宾川县| 温泉县| 台东县| 罗城| 黔西| 昔阳县| 乐都县| 双流县| 集贤县| 镇江市| 吴旗县| 靖安县| 克山县| 喀什市| 韶关市| 绥滨县| 沙坪坝区| 遂溪县| 富蕴县| 杭州市| 石泉县| 冀州市| 遂昌县| 政和县| 隆子县| 镇原县| 高雄市|