關(guān)于Nginx,除了用它做正常的Web服務(wù)器,還經(jīng)常用它做網(wǎng)絡(luò)代理服務(wù)器使用;來(lái)解決網(wǎng)絡(luò)訪問(wèn)受限的問(wèn)題。日常大家討論最多的就是“正向代理”和"反向代理"。很多人,經(jīng)常會(huì)弄不明白什么是"正向代理",什么又是"反向代理",他們之間到底有什么區(qū)別?
其實(shí)Nginx只有一種代理轉(zhuǎn)發(fā)功能。之所以大家經(jīng)常會(huì)說(shuō)正向代理或者是反向代理是因?yàn)檎镜慕嵌炔灰粯印N覀兛梢韵胂笠幌?0-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ì)于老大爺來(lái)說(shuō)都是代理,完成的動(dòng)作都是一樣的。對(duì)于Nginx來(lái)說(shuō)也是一樣的,所有網(wǎng)絡(luò)請(qǐng)求轉(zhuǎn)發(fā)指令都是一樣的。
Nginx代理指令對(duì)比
1.將內(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;
- }
- }
訪問(wèn) proxy_ip:8100 將會(huì)通過(guò)代理服務(wù)器把請(qǐng)求發(fā)出去。
1.將外部請(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é)論
通過(guò)對(duì)比兩段配置會(huì)發(fā)現(xiàn),對(duì)于Nginx來(lái)說(shuō),無(wú)論正向代理還是反向代理,指令都是一樣的。所以對(duì)于Nginx來(lái)說(shuō),都是代理,不分正反。最后附上一份示意圖,來(lái)進(jìn)一步說(shuō)明Nginx網(wǎng)絡(luò)代理的角色。
原文鏈接:https://www.toutiao.com/i6989475489471562252/