原創:花括號MC(微信公眾號:huakuohao-mc)。關注JAVA基礎編程及大數據,注重經驗分享及個人成長。
關于Nginx
,除了用它做正常的Web
服務器,還經常用它做網絡代理服務器使用;來解決網絡訪問受限的問題。日常大家討論最多的就是“正向代理”和"反向代理"。很多人,經常會弄不明白什么是"正向代理",什么又是"反向代理",他們之間到底有什么區別?
其實Nginx
只有一種代理轉發功能。之所以大家經常會說正向代理或者是反向代理是因為站的角度不一樣。我們可以想象一下80-90年代,機關大院里面負責收發信件的老大爺,把老大爺收發信件動作,想象成Nginx
對請求的轉發功能。
當老大爺把內部信件發往外部時,我們定義為正向代理
,那么當老大爺把外部發往內部的信件轉發給內部每個具體的人時,就叫做反向代理
。但是對于老大爺來說都是代理,完成的動作都是一樣的。對于Nginx
來說也是一樣的,所有網絡請求轉發指令都是一樣的。
Nginx代理指令對比
upstream baidu {
server www.baidu.com;
}
server{
listen 8100;
server_name proxy_baidu;
location / {
proxy_pass http://baidu;
}
}
訪問 proxy_ip:8100
將會通過代理服務器把請求發出去。
upstream test-api {
ip_hash;
server 192.168.32.12:80;
server 192.168.32.13:80;
}
server{
listen 8080;
location / {
proxy_pass http://test-api;
}
}
這段配置將會把外部發往Nginx
請求轉發給內部的192.168.32.12
和192.168.32.13
這兩臺服務器。
結論
通過對比兩段配置會發現,對于Nginx
來說,無論正向代理還是反向代理,指令都是一樣的。所以對于Nginx
來說,都是代理,不分正反。最后附上一份示意圖,來進一步說明Nginx
網絡代理的角色。

閱讀原文:原文鏈接
該文章在 2025/7/21 10:48:06 編輯過