ProxyPass與ProxyPassReverse及ProxyPassMatch的概述

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


這幾個都是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)$ http://backend.example.com$1

這個示例表示對所有gif圖片的請求,都被會轉到後端,如此時請求http://example.com/foo/bar.gif,那內部將會轉換爲這樣的請求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/

ProxyPassReverse的作用就是反向代理,如果沒有加這樣的反向代理設置的情況下,訪問http://www.test.com/example/a,如果www.example.com對請求進行了redirect至http://www.example.com/b,那麼,客戶端就會繞過反向代理,進而訪問http://www.test.com/example/b。如果設置了反向代理,則會在轉交HTTP重定向應答到客戶端之前調整它爲http://www.test.com/example/a/b,即是在原請求之後追加上了redirect的路徑。


4、參考:

APACHE2.2中文文檔:http://www.renren.it/my/api/apache_jinbuguo/Apache/ApacheMenu/mod/mod_proxy.html

本文出自:馮立彬的博客


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