Nginx中的proxy_pass該怎么設(shè)置,針對這個問題,這篇文章詳細(xì)介紹了相對應(yīng)的分析和解答,希望可以幫助更多想解決這個問題的小伙伴找到更簡單易行的方法。
從網(wǎng)站建設(shè)到定制行業(yè)解決方案,為提供成都網(wǎng)站設(shè)計、成都網(wǎng)站制作服務(wù)體系,各種行業(yè)企業(yè)客戶提供網(wǎng)站建設(shè)解決方案,助力業(yè)務(wù)快速發(fā)展。創(chuàng)新互聯(lián)建站將不斷加快創(chuàng)新步伐,提供優(yōu)質(zhì)的建站服務(wù)。Nginx很適合用做反向代理[ Reverse-Proxy]的,主要原因有以下幾點。
Nginx的高性能特性,可以Hold住更多的連接數(shù)。
更加成熟的面向互聯(lián)網(wǎng)的設(shè)計,可以增強后端服務(wù)器的安全性。
可以方便的對性能進(jìn)行橫向擴展,增強數(shù)據(jù)處理能力。
基于以上優(yōu)點,那么該如何正確的配置Nginx反向代理?
分為兩種情況
第一種情況: proxy_pass后面的指定帶有URI
被location所匹配的URI將會被proxy_pass后面的URI所替換。舉例如下,
location /requested-uri/ {
proxy_pass http://example.com/backend/;
}
此時,如果請求的連接是, http://proxy-ip/requested-uri/a.html,則傳輸?shù)胶蠖说穆窂骄蜁兂?,http://example.com/backend/a.html
驗證如下:
場景:在tomcat上創(chuàng)建了兩個鏈接,分別是http://10.2.0.51:8000/zzp/app1 和 http://10.2.0.51:8000/zzp/app2
兩個鏈接分別顯示不同的內(nèi)容,app1 和 app2
然后我們在nginx中配置如下:
location /zzy/ {
proxy_pass http://10.2.0.51:8000/zzp/;
}
這時,我們訪問http://10.2.0.51/zzy/app1 時,就會發(fā)現(xiàn)會得到app1 ,說明zzy這個URI被zzp替換了。
第二種情況: proxy_pass后面不帶URI時,則URI直接傳輸給了后端服務(wù)器。舉例如下,
location /requested-uri/ {
proxy_pass http://example.com;
}
此時如果請求的連接是,http://proxy-ip/requested-uri/a.html,則傳輸?shù)胶蠖说穆窂骄蜁兂桑琱ttp://example.com/requested-uri/a.html
驗證如下:
接上個例子,我們在proxy_pass中不帶有uri,此時我們訪問zzy這個uri時,就會發(fā)現(xiàn),404錯誤。
location /zzy/ {
proxy_pass http://10.2.0.51:8000;
}
修改配置如下,
location /zzp/ {
proxy_pass http://10.2.0.51:8000;
}
訪問http://10.2.0.51/zzp/app1時,就調(diào)整好了。
Exceptions:
凡事總有例外,Nginx也是這樣。
特特例:1.1.12之前的版本,在某些情況下,不帶URI的proxy_pass指令會被一些指令所取代。
一般特例:
當(dāng)location后面帶有正則表達(dá)式的時候,此時proxy_pass后面不帶URI。
因為,如果location在有正則表達(dá)式的時候,nginx無法確定哪個部分的URI和表達(dá)式匹配。
當(dāng)URI被用rewrite指令修改的時候,并且同樣的配置將被用于處理一個請求。例如,這個好繞口。Boring
location /name/ {
rewrite /name/([^/]+) /users?name=$1 break;
proxy_pass http://127.0.0.1;
}
當(dāng)prox_pass中使用了變量的時候,將會被以下替換。
location /name/ {
proxy_pass http://127.0.0.1$request_uri;
}
總而言之,只要我們不觸碰exceptions發(fā)生的條件,我們就能達(dá)到自己的目的,如果不小心出現(xiàn)exceptions,那就來這里研究吧。
Basic is import , and should be studied in details.
關(guān)于Nginx中的proxy_pass該怎么設(shè)置問題的解答就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關(guān)注創(chuàng)新互聯(lián)-成都網(wǎng)站建設(shè)公司行業(yè)資訊頻道了解更多相關(guān)知識。