Apache2.4反向代理設置


一、配置方向代理

1,放開虛擬主機(反向代理)模塊,在httpd.conf中把下三行配置放開:

1 LoadModule proxy_module modules/mod_proxy.so 2 LoadModule proxy_http_module modules/mod_proxy_http.so 3 Include conf/extra/httpd-vhosts.conf

2,在conf/extra/httpd-vhosts.conf中配置虛擬主機(反向代理):

 1 <VirtualHost guangsoft.io:80>
 2  ServerAdmin guanghe@guangsoft.io  3     DocumentRoot "/opt/apache-2.4.9/htdocs"
 4  ServerName guangsoft.io  5     ErrorLog "logs/guangsoft.io-error_log"
 6     CustomLog "logs/guangsoft.io-access_log" common  7  ProxyPreserveHost On  8     ProxyPass / http://guangsoft.io:8080/
 9     ProxyPassReverse / http://guangsoft.io:8080/
10 </VirtualHost>

二、參數研究

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.example.com/example/b。如果設置了反向代理,則會在轉交HTTP重定向應答到客戶 端之前調整它為http://www.test.com/example/b,通過www.test.com主機轉發到www.example.com主機,即客戶端完全看不到www.example.com的身影,仿佛一直和www.test.com在通信。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM