Apache的ProxyPass簡單使用

http://mtnt2008.iteye.com/blog/764207

該指令可以將遠程服務器映射到本地服務器的URL空間;本地的服務器並不是扮演傳統意義上的代理服務器的角色,而是表現爲遠程服務器的一個鏡像。此本地服務器常被成爲反向代理(reversed proxy)或者是網關(gateway)。路徑是指本地虛擬路徑的名字;url指遠程服務器的一個部分URL,不能包含查詢字符串。

 

描述:將遠程服務器映射到本地服務器的URL空間
語法:ProxyPass [路徑] !|url [鍵=值 鍵=值 ...]] [nocanon]
上下文: server config, virtual host, directory
狀態:擴展
模塊:mod_proxy

 

配置httpd.conf

 

Java代碼  收藏代碼

  1. #保證以下模塊加載  
  2. LoadModule proxy_module modules/mod_proxy.so  
  3. LoadModule proxy_http_module modules/mod_proxy_http.so  
  4. #配置ProxyPass  
  5. ProxyPass /new/ http://mysite.com/  
  6. ProxyPass /new2/ http://192.168.0.169:8080/  

 

注意:
順序很重要:排除的指令必須在一般的ProxyPass指令之前。ProxyPass / http://192.168.0.169:8080/ 配置在其他規則之後,否則可能子目錄會被忽略

 

上面的配置已經可以實現大部分功能了,要控制細節,可以參考官方文檔:

 

http://httpd.apache.org/docs/2.0/mod/mod_proxy.html

 

===========================================================================================================

http://www.cnblogs.com/milton/p/4215125.html

apache中的mod_proxy模塊用於url的轉發,即具有代理的功能。應用此功能,可以很方便的實現同tomcat等應用服務器的整合,甚至可以很方便的實現web集羣的功能。 

例如使用apache作爲域名www.test.com代理服務器,讓其暴露在公網上,即DNS解析到本機器上,真正提供web服務器的是另一臺位於同一內網的機器上,假設IP是192.168.100.22,那麼只需要如下配置就可以了。 

ProxyPass / http://192.168.100.22/ 

ProxyPassReverse / http://192.168.100.22/

ProxyPass 很好理解,就是把所有來自客戶端對http://www.test.com的請求轉發給http://192.168.100.22上進行處 理, ProxyPassReverse 的配置總是和ProxyPass 一致,

它的作用在於反向代理,如果響應中有302重定向,ProxyPassReverse就派上用場。

舉例說明,假設用戶訪問http://www.test.com/exam.php,通過轉發交給http://192.168.100.22 /exam.php處理,假定exam.php處理的結果是實現redirect到login.php(使用相對路徑,即省略了域名信息),如果沒有配置 反向代理,客戶端收到的請求響應是重定向操作,並且重定向目的url爲http://192.168.100.22/login.php ,而這個地址只是代理服務器能訪問到的,可想而知,客戶端肯定是打不開的,反之如果配置了反向代理,則會在轉交HTTP重定向應答到客戶端之前調整它爲 http://www.test.com/login.php,即是在原請求之後追加上了redirect的路徑。當客戶端再次請求http: //www.test.com/login.php,代理服務器再次工作把其轉發到http://192.168.100.22/login.php。 客戶端到服務器稱之爲正向代理,那服務器到客戶端就叫反向代理 httpd.conf 的修改例子, 可以放到VirtualHost節點配置裏面

ProxyPass /test http://192.168.1.2:8080/test
ProxyPassReverse /test http://192.168.1.2:8080/test

    AllowOverride None
    Order Deny,Allow
    Allow from all


=============================================================================================================

查看原文:http://www.ibloger.net/article/296.html

apache中的mod_proxy模塊主要作用就是進行url的轉發,即具有代理的功能。應用此功能,可以很方便的實現同tomcat等應用服務器的整合,甚者可以很方便的實現web集羣的功能。

例如使用apache作爲域名www.test.com代理服務器,讓其暴露在公網上,即DNS解析到本機器上,真正提供web服務器的是另一臺位於同一內網的機器上,假設起IP是192.168.100.22,那麼只需要如下配置就可以了。

ProxyPass / http://192.168.100.22/ 
ProxyPassReverse / http://192.168.100.22/

ProxyPass 很好理解,就是把所有來自客戶端對http://www.test.com的請求轉發給http://192.168.100.22上進行處理

ProxyPassReverse 的配置總是和ProxyPass 一致,但用途很讓人費解。似乎去掉它很能很好的工作,事實真的是這樣麼,其實不然,如果響應中有302重定向,ProxyPassReverse就派上用場。舉例說明,假設用戶訪問http://www.test.com/exam.php,通過轉發交給http://192.168.100.22 /exam.PHP處理,假定exam.php處理的結果是實現redirect到login.php(使用相對路徑,即省略了域名信息),如果沒有配置反向代理,客戶端收到的請求響應是重定向操作,並且重定向目的url爲http://192.168.100.22/login.php ,而這個地址只是代理服務器能訪問到的,可想而知,客戶端肯定是打不開的,反之如果配置了反向代理,則會在轉交HTTP重定向應答到客戶端之前調整它爲 http://www.test.com/login.php,即是在原請求之後追加上了redirect的路徑。當客戶端再次請求http: //www.test.com/login.php,代理服務器再次工作把其轉發到http://192.168.100.22/login.php

客戶端到服務器稱之爲正向代理,那服務器到客戶端就叫反向代理。

ProxyPass與ProxyPassReverse及ProxyPassMatch這幾個都是APACHE的代理指令

1、ProxyPass:

語法:ProxyPass [path] !|url

它主要是用作URL前綴匹配,不能有正則表達式,它裏面配置的Path實際上是一個虛擬的路徑,在反向代理到後端的url後,path是不會帶過去的,使用示例:

1)、ProxyPass / images/ !

這個示例表示,/images/的請求不被轉發。

2)、ProxyPass /mirror/foo/ http://backend.example.com/

    我們假設當前的服務地址是http://example.com/,如果我們做下面這樣的請求:

    http://example.com/mirror/foo/bar

    那將被轉成內部請求:

    http://backend.example.com/bar

注:配置的時候,不需要被轉發的請求,要配置在需要被轉發的請求前面。

2、ProxyPassMatch

語法:ProxyPassMatch [regex] !|url

這個實際上是url正則匹配,而不是簡單的前綴匹配,匹配上的regex部分是會帶到後端的url的,這個是與ProxyPass不同的。使用示例:

1、ProxyPassMatch ^/images !

這個示例表示對/images的請求,都不會被轉發。

2、ProxyPassMatch ^(/.*.gif)1

  1. 這個示例表示對所有gif圖片的請求,都被會轉到後端,如此時請求

  2. http://example.com/foo/bar.gif,

  3. 那內部將會轉換爲這樣的請求

  4. http://backend.example.com/foo/bar.gif。

3、ProxyPassReverse

語法:ProxyPassReverse [路徑] url

它一般和ProxyPass指令配合使用,此指令使Apache調整HTTP重定向應答中Location, Content-Location, URI頭裏的URL,這樣可以避免在Apache作爲反向代理使用時。

後端服務器的HTTP重定向造成的繞過反向代理的問題。參看下面的示例

ProxyPass /example http://www.example.com/ 
ProxyPassReverse /example http://www.example.com/

via http://blog.csdn.net/fenglibing/article/details/6796094

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章