您好,登錄后才能下訂單哦!
Nginx中的proxy_pass該怎么設置,針對這個問題,這篇文章詳細介紹了相對應的分析和解答,希望可以幫助更多想解決這個問題的小伙伴找到更簡單易行的方法。
Nginx很適合用做反向代理[ Reverse-Proxy]的,主要原因有以下幾點。
Nginx的高性能特性,可以Hold住更多的連接數。
更加成熟的面向互聯網的設計,可以增強后端服務器的安全性。
可以方便的對性能進行橫向擴展,增強數據處理能力。
基于以上優點,那么該如何正確的配置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,則傳輸到后端的路徑就會變成,http://example.com/backend/a.html
驗證如下:
場景:在tomcat上創建了兩個鏈接,分別是http://10.2.0.51:8000/zzp/app1 和 http://10.2.0.51:8000/zzp/app2
兩個鏈接分別顯示不同的內容,app1 和 app2
然后我們在nginx中配置如下:
location /zzy/ {
proxy_pass http://10.2.0.51:8000/zzp/;
}
這時,我們訪問http://10.2.0.51/zzy/app1 時,就會發現會得到app1 ,說明zzy這個URI被zzp替換了。
第二種情況: proxy_pass后面不帶URI時,則URI直接傳輸給了后端服務器。舉例如下,
location /requested-uri/ {
proxy_pass http://example.com;
}
此時如果請求的連接是,http://proxy-ip/requested-uri/a.html,則傳輸到后端的路徑就會變成,http://example.com/requested-uri/a.html
驗證如下:
接上個例子,我們在proxy_pass中不帶有uri,此時我們訪問zzy這個uri時,就會發現,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時,就調整好了。
Exceptions:
凡事總有例外,Nginx也是這樣。
特特例:1.1.12之前的版本,在某些情況下,不帶URI的proxy_pass指令會被一些指令所取代。
一般特例:
當location后面帶有正則表達式的時候,此時proxy_pass后面不帶URI。
因為,如果location在有正則表達式的時候,nginx無法確定哪個部分的URI和表達式匹配。
當URI被用rewrite指令修改的時候,并且同樣的配置將被用于處理一個請求。例如,這個好繞口。Boring
location /name/ {
rewrite /name/([^/]+) /users?name=$1 break;
proxy_pass http://127.0.0.1;
}
當prox_pass中使用了變量的時候,將會被以下替換。
location /name/ {
proxy_pass http://127.0.0.1$request_uri;
}
總而言之,只要我們不觸碰exceptions發生的條件,我們就能達到自己的目的,如果不小心出現exceptions,那就來這里研究吧。
Basic is import , and should be studied in details.
關于Nginx中的proxy_pass該怎么設置問題的解答就分享到這里了,希望以上內容可以對大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關注億速云行業資訊頻道了解更多相關知識。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。