apache做反向代理,所以記錄一下
- 這幾個(gè)都是APACHE的代理指令:
1茁影、ProxyPass:
語(yǔ)法:ProxyPass [path] !|url
它主要是用作URL前綴匹配懂算,不能有正則表達(dá)式耘戚,它里面配置的Path實(shí)際上是一個(gè)虛擬的路徑,在反向代理到后端的url后,path是不會(huì)帶過(guò)去的篮洁,使用示例:
1)帽芽、ProxyPass /images/ !
這個(gè)示例表示删掀,/images/的請(qǐng)求不被轉(zhuǎn)發(fā)。
2)导街、ProxyPass /mirror/foo/ http://backend.example.com/
我們假設(shè)當(dāng)前的服務(wù)地址是http://example.com/披泪,如果我們做下面這樣的請(qǐng)求:
http://example.com/mirror/foo/bar
那將被轉(zhuǎn)成內(nèi)部請(qǐng)求:
http://backend.example.com/bar
注:配置的時(shí)候,不需要被轉(zhuǎn)發(fā)的請(qǐng)求搬瑰,要配置在需要被轉(zhuǎn)發(fā)的請(qǐng)求前面款票。
2控硼、ProxyPassMatch:
語(yǔ)法:ProxyPassMatch [regex] !|url
這個(gè)實(shí)際上是url正則匹配,而不是簡(jiǎn)單的前綴匹配艾少,匹配上的regex部分是會(huì)帶到后端的url的卡乾,這個(gè)是與ProxyPass不同的。使用示例:
1缚够、ProxyPassMatch ^/images !
這個(gè)示例表示對(duì)/images的請(qǐng)求幔妨,都不會(huì)被轉(zhuǎn)發(fā)。
2谍椅、ProxyPassMatch ^(/.*\.gif)$ http://backend.example.com$1
這個(gè)示例表示對(duì)所有g(shù)if圖片的請(qǐng)求陶冷,都被會(huì)轉(zhuǎn)到后端,如此時(shí)請(qǐng)求http://example.com/foo/bar.gif毯辅,那內(nèi)部將會(huì)轉(zhuǎn)換為這樣的請(qǐng)求http://backend.example.com/foo/bar.gif埂伦。
3、ProxyPassReverse
語(yǔ)法:ProxyPassReverse [路徑] url
它一般和ProxyPass指令配合使用思恐,此指令使Apache調(diào)整HTTP重定向應(yīng)答中Location, Content-Location, URI頭里的URL沾谜,這樣可以避免在Apache作為反向代理使用時(shí),胀莹。后端服務(wù)器的HTTP重定向造成的繞過(guò)反向代理的問(wèn)題基跑。參看下面的示例:
ProxyPass /example http://www.example.com/
ProxyPassReverse /example http://www.example.com/
ProxyPassReverse的作用就是反向代理,如果沒(méi)有加這樣的反向代理設(shè)置的情況下描焰,訪問(wèn)http://www.test.com/example/a媳否,如果www.example.com對(duì)請(qǐng)求進(jìn)行了redirect至http://www.example.com/b,那么荆秦,客戶(hù)端就會(huì)繞過(guò)反向代理篱竭,進(jìn)而訪問(wèn)http://www.test.com/example/b。如果設(shè)置了反向代理步绸,則會(huì)在轉(zhuǎn)交HTTP重定向應(yīng)答到客戶(hù)端之前調(diào)整它為http://www.test.com/example/a/b掺逼,即是在原請(qǐng)求之后追加上了redirect的路徑。
- 開(kāi)啟apache模塊
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_connect_module modules/mod_proxy_connect.so
LoadModule proxy_ftp_module modules/mod_proxy_ftp.so
LoadModule proxy_http_module modules/mod_proxy_http.so
- 虛擬主機(jī)配置
<VirtualHost *:80>
ServerName node.js
ServerAlias www.node.js
ProxyRequests off
<Proxy *>
Order deny,allow
Allow from all
</Proxy>
<Location />
ProxyPass http://localhost:8080/
ProxyPassReverse http://localhost:8080/
</Location>
</VirtualHost>