Nginx代理服務

caohaoyu發表於2018-10-31

一、正向代理與反向代理的概念

正向代理:區域網內的機器藉助代理服務訪問區域網外的網站。代理的物件是客戶端,目標是去訪問外網的資源。(eg:通過代理翻牆去看看外面的世界)

Nginx代理服務

反向代理:區域網向Internet提供資源,讓Internet上其他使用者通過代理伺服器訪問區域網內的資源。代理的物件是服務端,目標是讓其他客戶端可以訪問服務端的資源(eg:公司內的負載均衡、靜態資源伺服器)

Nginx代理服務

總結:正向代理與反向代理涉及到的技術基本一致,主要是因為應用場景不同而進行區別。

二、正向代理配置的指令

1.resolver指令:用於指定DNS伺服器IP地址

2.resolver_timeout指令:用於設定DNS域名解析超時時間

3.proxy_pass指令:用於設定代理伺服器的協議和地址(反向代理也會用到,到時候詳細介紹)

因為正向代理服務的場合不多,所以指令較少,功能也比較簡單

(另外關於nginx正向代理是否支援HTTPS,暫時還沒嘗試,以後實踐了在補充)

三、反向代理配置的指令

1.proxy_pass指令:用於設定被代理伺服器的地址

語法結構:
proxy_pass URL;
URL包含傳輸協議、主機名稱或者IP地址加埠號等要素。傳輸協議通常是"http"或者"https"
注意upstream和proxy_pass搭配使用的兩種情況
(1)proxy_list中指明瞭傳輸協議
upstream proxy_list
{
    server http://192.168.4.30/uri/;
    server http://192.168.12.19/uri/;
}
server
{
    location /
    {
        proxy_pass proxy_list;
    }
}
(2)proxy_list中沒傳輸協議
upstream proxy_list
{
    server 192.168.4.30/uri/;
    server 192.168.12.19/uri/;
}
server
{
    location /
    {
        proxy_pass http://proxy_list;
    }
}

還有需要注意URL中是否包含URI,以訪問"http://www.test.com/test/index.html"為例
server{
    server_name www.test.com;
    location /test/
    {
        #proxy_pass http://192.168.12.19; --->轉到"http://192.168.12.19/test/index.html"
        #proxy_pass http://192.168.12.19/index/; --->轉到"http://192.168.12.19/index/index.html"
        #proxy_pass http://192.168.12.19/; --->轉到"http://192.168.12.19/index.html"
    }
}
複製程式碼

2.proxy_hide_header指令:設定在傳送HTTP響應時,隱藏一些頭域資訊

3.proxy_pass_header指令:設定一些頭域資訊以被髮送

4.proxy_pass_request_body、proxy_pass_request_headers指令:是否將客戶端的請求體、請求頭髮送給代理伺服器

5.proxy_set_header、proxy_set_body指令:設定新的請求頭、請求體發往代理伺服器

還有14個指令,以後再慢慢補,先把自己常用的指令先整理出來。

四、nginx伺服器負載均衡相關配置

nginx伺服器是現在靜態的給予優先順序的加權輪詢演算法,主要使用配置proxy_pass和upstream指令,以下是例項

upstream backend
{
    server 192.168.4.30 weight=5;
    server 192.168.12.19 weight=3;
    server 192.168.11.17 ;  #預設weight=1
}
server
{
    location /
    {
        proxy_pass http://backend;
        proxy_set_header Host $host;
    }
}
複製程式碼

根據backend伺服器組中的不同的優先順序別,實現加權輪詢。 192.168.4.30的級別最高,優先接收和處理請求,192.168.11.17的級別最低,最少處理請求,192.168.12.19處於中等優先順序。

輪詢負載均衡就是將所有伺服器組的weight設定為一樣的即可

五、總結

在工作中經常會涉及到nginx代理相關的內容,但是總是一知半解或者隨用隨百度......希望有跟我一樣想法的小夥伴可以通過這篇文章可以對nginx代理有更明確地認識和應用能力。

另外學習時間倉促,歡迎批評指正!

相關文章