天天看點

Nginx正反向代理一 概念二 配置

首先應該先明确正向代理和反向代理的配置方式是一樣的,不一樣的是兩者的作用和應用場景不同

一 概念

正向代理:

用戶端在通路伺服器中間加了一個代理伺服器,用戶端需要知道這個代理伺服器的的IP主動連接配接,再通過代理伺服器通路目标伺服器。重點就是代理伺服器和目标伺服器并不是一體的,目标伺服器的本意沒想通過代理伺服器傳回資源,是用戶端的意圖。

Nginx正反向代理一 概念二 配置
反向代理:

用戶端在通路伺服器時,目前的伺服器并不是直接提供資源的伺服器,這個伺服器其實是代理伺服器,它将通路目标伺服器,帶着結果給用戶端響應。重點就是代理伺服器(用戶端通路的那個伺服器)和目标伺服器是一體,放用戶端并不知道自己通路的是代理伺服器(透明),提供服務的一方就是想讓你先通路代理伺服器,代理伺服器再去通路目标伺服器。

Nginx正反向代理一 概念二 配置

舉個例子就是甲、乙兩家公司有合作,A、B屬于甲公司,C、D屬于乙公司,甲公司的A和乙公司需要進行溝通,第一種情況B的替A傳話給C,這就是正向代理;第二種情況A給乙公司發郵件想跟D确認情況,但是D隻是個傳話的,決策權在C,D跟C說了情況再跟A回報,這就是反向代理。

正向代理 反向代理
主要作用 屏蔽用戶端IP、集中式緩存、解決用戶端不能直連服務端的問題。 屏蔽服務端内部實作、負載均衡、緩存。
應用場景 爬蟲、翻牆、maven 的nexus 服務 Nginx 、Apache負載均衡應用

二 配置

在location配置proxy_pass參數,表明指向的位址

正向代理示範:

通路虛拟機的/baidu.html,将其正向代理到百度首頁

#正向代理到baidu 服務
location = /baidu.html {
  proxy_pass http://www.baidu.com;
}
           
Nginx正反向代理一 概念二 配置

反向代理示範:

通路虛拟機的/snowman/hello.html,反向代理到虛拟機的tomcat的hello.html檔案

先在tomcat地webapp目錄下建個snowman/hello.html檔案

location = /snowman {
  proxy_pass http://127.0.0.1:8080;
}
           
Nginx正反向代理一 概念二 配置
Nginx正反向代理一 概念二 配置

代理相關參數:

proxy_pass           # 代理服務
proxy_redirect off;   # 是否允許重定向
proxy_set_header Host $host; # 傳 header 參數至後端服務
proxy_set_header X-Forwarded-For $remote_addr; # 設定request header 即用戶端IP 位址
proxy_connect_timeout 90; # 連接配接代理服務逾時時間
proxy_send_timeout 90; # 請求發送最大時間
proxy_read_timeout 90;  # 讀取最大時間
proxy_buffer_size 4k; 
proxy_buffers 4 32k;
proxy_busy_buffers_size 64k; 
proxy_temp_file_write_size 64k;
           

繼續閱讀