首先應該先明确正向代理和反向代理的配置方式是一樣的,不一樣的是兩者的作用和應用場景不同
一 概念
正向代理:
用戶端在通路伺服器中間加了一個代理伺服器,用戶端需要知道這個代理伺服器的的IP主動連接配接,再通過代理伺服器通路目标伺服器。重點就是代理伺服器和目标伺服器并不是一體的,目标伺服器的本意沒想通過代理伺服器傳回資源,是用戶端的意圖。
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsIyZuBnLzITM3MDMycTMxMDMxgTMwIzLc52YucWbp5GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.png)
反向代理:
用戶端在通路伺服器時,目前的伺服器并不是直接提供資源的伺服器,這個伺服器其實是代理伺服器,它将通路目标伺服器,帶着結果給用戶端響應。重點就是代理伺服器(用戶端通路的那個伺服器)和目标伺服器是一體,放用戶端并不知道自己通路的是代理伺服器(透明),提供服務的一方就是想讓你先通路代理伺服器,代理伺服器再去通路目标伺服器。
舉個例子就是甲、乙兩家公司有合作,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;
}
反向代理示範:
通路虛拟機的/snowman/hello.html,反向代理到虛拟機的tomcat的hello.html檔案
先在tomcat地webapp目錄下建個snowman/hello.html檔案
location = /snowman {
proxy_pass http://127.0.0.1:8080;
}
代理相關參數:
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;