原創(chuàng):花括號(hào)MC(微信公眾號(hào):huakuohao-mc)。關(guān)注JAVA基礎(chǔ)編程及大數(shù)據(jù),注重經(jīng)驗(yàn)分享及個(gè)人成長。
關(guān)于Nginx
,除了用它做正常的Web
服務(wù)器,還經(jīng)常用它做網(wǎng)絡(luò)代理服務(wù)器使用;來解決網(wǎng)絡(luò)訪問受限的問題。日常大家討論最多的就是“正向代理”和"反向代理"。很多人,經(jīng)常會(huì)弄不明白什么是"正向代理",什么又是"反向代理",他們之間到底有什么區(qū)別?
其實(shí)Nginx
只有一種代理轉(zhuǎn)發(fā)功能。之所以大家經(jīng)常會(huì)說正向代理或者是反向代理是因?yàn)檎?/span>的角度不一樣。我們可以想象一下80-90年代,機(jī)關(guān)大院里面負(fù)責(zé)收發(fā)信件的老大爺,把老大爺收發(fā)信件動(dòng)作,想象成Nginx
對(duì)請(qǐng)求的轉(zhuǎn)發(fā)功能。
當(dāng)老大爺把內(nèi)部信件發(fā)往外部時(shí),我們定義為正向代理
,那么當(dāng)老大爺把外部發(fā)往內(nèi)部的信件轉(zhuǎn)發(fā)給內(nèi)部每個(gè)具體的人時(shí),就叫做反向代理
。但是對(duì)于老大爺來說都是代理,完成的動(dòng)作都是一樣的。對(duì)于Nginx
來說也是一樣的,所有網(wǎng)絡(luò)請(qǐng)求轉(zhuǎn)發(fā)指令都是一樣的。
Nginx代理指令對(duì)比
- 將內(nèi)部請(qǐng)求轉(zhuǎn)發(fā)到外部。
upstream baidu {
server www.baidu.com;
}
server{
listen 8100;
server_name proxy_baidu;
location / {
proxy_pass http://baidu;
}
}
訪問 proxy_ip:8100
將會(huì)通過代理服務(wù)器把請(qǐng)求發(fā)出去。
- 將外部請(qǐng)求轉(zhuǎn)發(fā)到內(nèi)部
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;
}
}
這段配置將會(huì)把外部發(fā)往Nginx
請(qǐng)求轉(zhuǎn)發(fā)給內(nèi)部的192.168.32.12
和192.168.32.13
這兩臺(tái)服務(wù)器。
結(jié)論
通過對(duì)比兩段配置會(huì)發(fā)現(xiàn),對(duì)于Nginx
來說,無論正向代理還是反向代理,指令都是一樣的。所以對(duì)于Nginx
來說,都是代理,不分正反。最后附上一份示意圖,來進(jìn)一步說明Nginx
網(wǎng)絡(luò)代理的角色。

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