国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 網絡通信 > 正文

R-Proxy-使用Apache架設

2019-11-04 20:17:57
字體:
來源:轉載
供稿:網友

  作者: Duncan Lo < duncan@twn.wox.org >
  
  適用對象: 防火墻或系統治理員.
  適用條件: 對 linux 環境有基礎的治理及操作能力.
  文章附注: 本篇文章為自由文件,歡迎非商業性質轉載,并請注明出處!
   商業性質轉載請來信告知!
  非凡注重: 1.本篇文章提供之程序及設定*不一定*符合您的環境,
   請依您的系統環境適當地修改程序及設定.
   2.在執行任何具破壞性的動作及行為前,
   請確認您已作好完整可用的資料備份工作.
   3.請把整篇文章看完再發問,謝謝!
  
   本文共分四個單元,第一單元是簡介 R-PRoxy 基本觀念,及使用 Apache 架設
  R-Proxy 的方法基本設定,第二單元是利用 Apache Rewrite 模塊,使用 R-Proxy 設定
  Web 主機的分散負載及主機容錯的功能,第三單元是探討 Apache 1.3 上的 mod_proxy
  模塊之安全性問題,第四個單元是由 kefore 網友提供的 Apache 2 上的 R-Proxy 架設
  心得.
  
  第一單元: 架設 R-Proxy
  
   一般的 Proxy 主機,是服務內部的 Client 上網用的,通常都是用 Squid 架設,
  同時為了存取效率及節省頻寬, Squid 本身也提供 Cache 的功能,所以一般 Proxy主機也稱為 Proxy Cache Server 代理快取服務器.
  
   R-Proxy 本身也是一種代理服務器,那個 R 代表的是 Reverse 反向的意思,最主要的用途是反過來代理,替 Internet 的使用者代理存取內部受限制的網站,假如有開啟 Cache 功能,它同樣可以提供 File Cache 的功能,簡單來說 R-Proxy
  就像是把 Proxy 的架構及需求,反向過來,使用者角色對調的意思.具體的介紹可以參考最后面的 Netscape Proxy Server - Reverse Proxy 圖文.
  
   R-Proxy 實際應用上多與防火墻整合在一起,代理存取內部的網站,不讓外部使用者直接存取內部受限制及保護之網站,或是將 Web 依目錄結構由數臺主機來分散服務,實測上,只要路徑及設定正確,該 R-Proxy 可以支持如Html,php,asp,java及cgi程序的
  Web 環境.而內部的 Web 主機可以設限只有 R-Proxy 的 ip 位置才可來存取,而一般的Internet 使用者不行直接存取,相當于把 R-Proxy 當成一臺虛的 Web 主機,相對的,
  網站的安全性也提高了.
  
   在使用上, Proxy Cache 需要 Clien t在 IE, Netscape 內設定,或是在 Firewall上設成通透式的Cache方式,才可以使用 Proxy Cache 的功能,但用 R-Proxy, 使用者是完全不用作任何設定,只要 Firewall 或 Web 治理員把 R-Proxy 設好就行了.
  
   R-Proxy 的作法有很多種,使用 Apache 架設是目前最輕易的方法,請非凡注重,以下的教學是以 TurboLinux 7 Server 及 Apache 1.3.20 作示范,你實際的環境可能會需要作一些修改.還有以下的所說的 Proxy 是指一種功能,請不要跟 Squid 這個
  作快取代理的軟件弄混了...
  
   首先,你要先確認你的 Apache 有 proxy 這個 modules, 通常在httpd.conf內
  會有像下面兩行的 modules 設定:
  
   LoadModule proxy_module /usr/libexec/apache/libproxy.so
   AddModule mod_proxy.c
  
   確定 Apache 有 Proxy 這 modules 后,就可以開始來設定,找到下面這一段:
  
   在里面加上或把某幾行的#拿掉,內容大概會像這樣:
  
   ProxyRequests On
  
   Order deny,allow
   Deny from all
   Allow from .your_domain.com
  
   把 Allow from 修改成你予許的來源位置.接下要設定你要代理的Web主機位置,把設定加入:
  
   ProxyPass / http://192.168.1.7/
  
   上面那個 / 是指 Web 根目錄,后面的網址是內部的 Web 主機位置.
  
   Ok!完成,可以用 Browser 連到你架的 R-Proxy 主機試試,若是 R-Proxy 架在
   Firewall 上,可能要把 httpd port 作適度的開放,但不再需要作轉 port 的動作,你會發現,你連到 R-Proxy 主機的網頁內容就是你指定的那臺 Web 主機.
  
   你也可以把網頁分散在不同的主機上,因為只有一個 Web 主目錄,所以可以依Web 目錄來分,設定的方法像:
  
   ProxyPass / http://192.168.1.3/
   ProxyPass /webmail http://192.168.1.2/webmail/
   ProxyPass /sales http://192.168.1.7/
   ProxyPass /bbs http://192.168.1.10:8888/
  
   這邊有個重點,就是各主機網頁的目錄結構位置最好也是依循Web主目錄的結構,像上面第 1 跟第 2 行執行應該不會有問題,不過第 3, 4 行,就不一定可行,因為 Web 路徑可能會不對,非凡是該目錄有又有次目錄時,因為這 R-Proxy 是作代理存取的動作,而不是作轉址的動作,所以可能需要另外搭配 ProxyPassReverse 的指令.就像這樣:
  
   ProxyPass / http://192.168.1.3/
   ProxyPass /webmail http://192.168.1.2/webmail/
   ProxyPassReverse /webmail http://192.168.1.2/webmail/
   ProxyPass /sales http://192.168.1.7/
   ProxyPassReverse /sales http://192.168.1.7/
   ProxyPass /bbs http://192.168.1.10:8888/
  
   這樣像 http://192.168.1.2/webmail/images 就會轉到 /webmail/images 去,而不是 /images 這個錯誤路徑,不過還需注重的,就是次目錄的指定在網頁程序內的寫法,還是必須以"相對位置"的方式撰寫,使用"絕對位置"的方式還是有出錯的可能.
  
   我測試的 Apache proxy module 是不提供輪詢的功能,所以假如你的設定是下:
  
   ProxyPass / http://192.168.1.3/
   ProxyPass / http://192.168.1.2/
  
   基本上,還是只有第 1 條設定生效,而且也不提供容錯的功能,所以上面設定指的第 1 臺主機掛了,網頁還是連不到的,因為它不會自動啟用第 2 條設定,這部份就必須要搭配 Apache的 rewrite 模塊或其它具有錯誤偵測的 r-rproxy 模塊了.
  
   假如你想激活 Cache 功能,可以參考 Apache 設定手冊,增加幾個有關 Cache 的設定,
  實際使用上因為 R-Proxy 也許只代理存取內部的 Web 主機, File Cache 的異動及數量不大,
  在一些較復雜及中大型的 Web 網站比較適合,你可以自己斟酌要不要使用 Cache 的功能.
  相關的設定參數如下:
  
   CacheRoot "/var/proxy"
   CacheSize 5
   CacheGcInterval 4
   CacheMaxEXPire 24
   CacheLastModifiedFactor 0.1
   CacheDefaultExpire 1
   NoCache a_domain.com another_domain.edu joes.garage_sale.com
  
   使用了 R-Proxy 之后,還有一點不同的地方,就是 httpd log 的內容,原本讓任何使用者直接
  存取 Web 主機時, httpd log 內紀錄的是聯機 Client 的 IP 位置,但使用了 R-Proxy 后, log
  內紀錄的都將會是 R-Proxy 的 IP 位置,而 Client 的真實存取紀錄則會紀錄在 R-Proxy 內的
  httpd log 內,所以要追查聯機問題,則需要多檢查 R-Proxy 的 httpd log 內容.
  
   目前 R-Proxy 主機只有少數中大型網站有架設,但實際應用上, R-Proxy 是可以改善Web 存取效能,增加實體 Web 主機的安全性,我手上的有關 R-Proxy 資料還不完整,商業產品有很多已利用 R-Proxy 的觀念作到多線,異地的負載平衡及容錯存取,而且可以支持非 httpd服務.而在要作到像那些產品的功能可能就要考慮以 Squid 來實作 R-Proxy 功能了...
  
   參考資料:
  
   1.Apache - module mod_proxy
   http://httpd.apache.org/docs/mod/mod_proxy.html
  
   2.Netscape Proxy Server - Reverse Proxy
   http://developer.netscape.com/docs/manuals/proxy/adminux/revpxy.htm
  
   3.IBM HTTP Server
   http://tst.sinica.edu.tw/manual/ibm/index.html
  
  第二單元: R-Proxy 的分散負載及主機容錯
  
   在上一個單元內,可以發現基本的 R-Proxy 只能單純的依網頁目錄分散在不同的主機,而且一個網頁目錄只能連結一臺主機,當某臺主機當機,該連結的網頁目錄便失效了,這種
  單一靜態的分散服務及缺乏容錯機制的功能,并不是較好的 R-Proxy 功能.
  
   在 http://pihl.kumpu.org/mod_curltunnel.html 有提供一個 CrulTunnel 模塊,它
  提供類似于 ProxyPass 及 ProxyPassReverse 的指令 CrulTunnelPass 及 CrulTunnelPassReverse,
  安裝 CurlTunnel 模塊系統必需要有 http://curl.haxx.se/ 的 libcurl 函數,但實測后發現, CurlTunnel 模塊只是使錯誤連結的 404 錯誤訊息不再出現,還是不提供容錯的功能,所以這也不是我們想要的.
  
   想要解決網頁連結錯誤的問題,必須在 URL 路徑發生問題時, Apache 就要自動辨識錯誤,并導向正確或是錯誤訊息響應的網址,在 Apache 中就有一個提供這樣可以依條件及規則轉換URL 路徑的模塊 - Rewrite, Apache Rewrite 模塊是一個功能強大的 URL 路徑維護模塊,它可以依條件,規則或外部程序,資料來轉換網頁的 URL 路徑.
  
   以下的測試環境,同樣是將 R-Proxy 架設在防火墻上,而防火墻內有數臺 Web 主機.
  
   首先,你要先確認在你主機上有 Rewrite 模塊,而且在 httpd.conf 內有類似下面的設定:
  
   LoadModule rewrite_module /usr/libexec/apache/mod_rewrite.so


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 赞皇县| 宁阳县| 邢台县| 宣城市| 揭阳市| 金溪县| 澄城县| 伊宁市| 始兴县| 南召县| 古田县| 太原市| 贡嘎县| 北海市| 洛宁县| 徐水县| 河北区| 河东区| 陈巴尔虎旗| 噶尔县| 乐安县| 渭南市| 花莲县| 潜山县| 汝城县| 罗定市| 霸州市| 子洲县| 措美县| 丰县| 绥芬河市| 汾西县| 江达县| 蒙山县| 鄂伦春自治旗| 乌拉特后旗| 兴化市| 宜昌市| 富宁县| 大姚县| 龙州县|