【前端词典】和媳妇讲代理后的意外收获
前言
這篇文章之前是寫完了,不過由于我妻子看過之后,對這篇文章的評價(jià)是:寫的不錯,語句是通順的,排版是可以的,但代理是什么還是不清楚?所以我感覺之前寫的是失敗的,所以才有了現(xiàn)在這一篇。
接下來我會嘗試面向大眾,來解釋“代理”的概念。
概念實(shí)例化
在講代理的概念之前我先講個(gè)類比。也是我向大人解釋的過程。
還好我反應(yīng)機(jī)敏,要不然這個(gè)月的零花錢就要替我擋一刀了。可是我該怎么解釋呢?還要讓沒有編程語言基礎(chǔ)的人也聽懂,傷腦筋啊!在沒有思緒的時(shí)候,她突然問我晚上吃了沒有?這不就是很好的例子嗎?
解釋了這么久,不知道是真的懂了,還是因?yàn)樘Я恕2贿^我有錢吃肉了。接下來我們正經(jīng)的說說“正向代理”和“反向代理”
概念
首先附上正兒八經(jīng)的說明圖,先有一個(gè)整體的理解。
然后很官方的解釋它們的概念:
正向代理( Forward Proxy ):是指是一個(gè)位于客戶端和原始服務(wù)器之間的服務(wù)器,為了從原始服務(wù)器取得內(nèi)容, 客戶端向代理發(fā)送一個(gè)請求并指定目標(biāo)(原始服務(wù)器),然后代理向原始服務(wù)器轉(zhuǎn)交請求并將獲得的內(nèi)容返回給客戶端。客戶端才能使用正向代理。
反向代理( Reverse Proxy ):是指以代理服務(wù)器來接受 Internet 上的連接請求,然后將請求轉(zhuǎn)發(fā)給內(nèi)部網(wǎng)絡(luò)上的服務(wù)器,并將從服務(wù)器上得到的結(jié)果返回給 Internet 上請求連接的客戶端,此時(shí)代理服務(wù)器對外就表現(xiàn)為一個(gè)反向代理服務(wù)器。
接下來我提煉一下各自的特點(diǎn)。
特點(diǎn)
正向代理
反向代理
共同點(diǎn)
說了這么多,現(xiàn)在說說代理在工作中的時(shí)機(jī)應(yīng)用場景吧。
實(shí)際應(yīng)用
Nginx 服務(wù)器
Nginx 服務(wù)器的功能有很多,諸如反向代理、負(fù)載均衡、靜態(tài)資源服務(wù)器等。
客戶端本來可以直接通過 HTTP 協(xié)議訪問服務(wù)器,不過我們可以在中間加上一個(gè) Nginx 服務(wù)器,客戶端請求 Nginx 服務(wù)器,Nginx 服務(wù)器請求應(yīng)用服務(wù)器,然后將結(jié)果返回給客戶端,此時(shí) Nginx 服務(wù)器就是反向代理服務(wù)器。
在虛擬主機(jī)的配置中配置反向代理
# 虛擬主機(jī)的配置 server {listen 8080; # 監(jiān)聽的端口server_name 192.168.1.1; # 配置訪問域名root /data/toor; # 站點(diǎn)根目錄error_page 502 404 /page/404.html; # 錯誤頁面location ^~ /api/ { # 使用 /api/ 代理 proxy_pass 的值proxy_pass http://192.168.20.1:8080; # 被代理的應(yīng)用服務(wù)器 HTTP 地址} } 復(fù)制代碼以上簡單的配置就可以實(shí)現(xiàn)反向代理的功能。
當(dāng)然反向代理也可以處理跨域問題,在 Vue 中就可以使用 proxyTable 這個(gè)屬性進(jìn)行相關(guān)的配置來解決跨域問題帶來的煩惱。配置如下:
... proxyTable: {'/weixin': {target: 'http://192.168.48.11:8100/', // 接口的域名 secure: false, // 如果是 https 接口,需要配置這個(gè)參數(shù)changeOrigin: true, // 如果接口跨域,需要進(jìn)行這個(gè)參數(shù)配置pathRewrite: {'^/weixin': ''}}, }, ... 復(fù)制代碼負(fù)載均衡的配置
# upstream 表示負(fù)載服務(wù)器池,定義名字為 my upstream my {server 192.168.2.1:8080 weight=1 max_fails=2 fail_timeout=30s;server 192.168.2.2:8080 weight=1 max_fails=2 fail_timeout=30s;server 192.168.2.3:8080 weight=1 max_fails=2 fail_timeout=30s;server 192.168.2.4:8080 weight=1 max_fails=2 fail_timeout=30s;# 即在 30s 內(nèi)嘗試 2 次失敗即認(rèn)為主機(jī)不可用} 復(fù)制代碼負(fù)載均衡即將 請求/數(shù)據(jù) 輪詢分?jǐn)偟蕉鄠€(gè)服務(wù)器上執(zhí)行,負(fù)載均衡的關(guān)鍵在于 均勻。
也可以通過 ip-hash 的方式,根據(jù)客戶端 ip 地址的 hash 值將請求分配給固定的某一個(gè)服務(wù)器處理。
另外,服務(wù)器的硬件配置可能不同,配置好的服務(wù)器可以處理更多的請求,這時(shí)可以通過 weight 參數(shù)來控制。
以上。
前端詞典系列
《前端詞典》這個(gè)系列會持續(xù)更新,每一期我都會講一個(gè)出現(xiàn)頻率較高的知識點(diǎn)。希望大家在閱讀的過程當(dāng)中可以斧正文中出現(xiàn)不嚴(yán)謹(jǐn)或是錯誤的地方,本人將不勝感激;若通過本系列而有所得,本人亦將不勝欣喜。
如果你覺得我的文章寫的還不錯,可以關(guān)注我的微信公眾號,公眾號里會提前劇透呦。
你也可以添加我的微信 wqhhsd, 歡迎交流。
傳送門
總結(jié)
以上是生活随笔為你收集整理的【前端词典】和媳妇讲代理后的意外收获的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python之路---09 初始函数 参
- 下一篇: 网络编程2_网络通讯协议, socket