Nginx常見基礎配置---proxy代理模塊

Nginx常見基礎配置—proxy代理模塊

proxy代理

Nginx使用 ngx_ http_ proxy_ module來完成對後端服務的代理。這一節,我們將一起來見識 Nginx最流行的 proxy代理功能。

proxy_ pass請求代理規則

語法: proxy_ pass URL;

環境: location、 if in location、 limit_ except

含義:將請求代理到後端服務器,設置後端服務的 IP地址、端口號以及 HTTP/ HTTPS。

示例:將 URI爲/ test的請求代理到 127. 0. 0. 1上,端口號爲 81,使用 HTTP,代碼如下。


在代理過程中, URL的傳遞會有如下幾種變化:


注意:如果 location塊配置的 URI使用了正則表達式,那麼在使用 proxy_ pass時,就不能將 URI配置到 proxy_ pass指定的後端服務器的最後面了,即禁止使用類似 proxy_ pass http:// 127. 0. 0. 1: 81/ abc/的方式,否則可能會導致一些不可預測的問題出現。

減少後端服務器的網絡開銷

有很多請求的內容只和 URL有關,即後端服務器不需要讀取請求體和請求頭,只根據 URL的信息即可生成所需的數據。在這種情況下,可以使用如下兩個指令,並將其配置爲 off,禁止傳輸請求體和請求頭。

  • proxy_ pass_ request_ body:確定是否向後端服務器發送 HTTP請求體,支持配置的環境有 http、 server、 location。

  • proxy_ pass_ request_ headers:確定是否向後端服務器發送 HTTP請求頭,支持的配置的環境有 http、 server、 location。

通過配置以上兩個指令,後端服務接收到的流量將會變小。

控制請求頭和請求體

在請求被代理到後端服務器時,可以通過下所示的指令去控制請求頭和請求體。


注意:在設置 proxy_ set_ header後,下一層級會繼承這個請求頭的內容。但如果下一層級也配置了 proxy_ set_ header指令,那麼當請求到達下一層級時,在上一層級配置的請求頭將會被全部清除。

舉例如下:


如果要A和AB兩個請求頭都保留下來,可以用下面的方法:

控制請求和後端服務器的交互時間

控制請求和後端服務器交互時間的指令見下表。

如果使用默認的設置,即 60s,請求可能需要等待很久纔會做出下一步反應,而客戶端往往不會等待那麼久,所以需要合理設置交互時間,並且最好能在超時後做一些合理的措施。
如搭配使用 proxy_ next_ upstream*命令,這將在後面說明。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章