程序員別唬我系列之:反向代理
此代理非彼代理
看見『代理』二字就沖進來的網監大人,請不要激動,這篇文章說的并不是用來爬墻的『代理』技術,而且針對Web服務器的一種代理技術~
通常我們所說的代理,都是指的客戶端向外界發起請求時,并不是直接與目標服務器連接,而是經過一個代理服務器,將所有請求交給代理服務器,由它去負責連接外界的目標服務器,同時從服務器返回的數據,也經過代理服務器,返回到客戶端。在外界看來,所有請求都是來自這臺代理服務器,這樣就成功的將客戶端隱藏在自己身后,起到了一種保護客戶端的作用。
而『反向代理』卻是反過來的,它是針對服務器的一種代理技術。反向代理服務器可以接受客戶端的請求,然后將它分發到被代理的服務器上,待這些服務器處理完請求后,再將結果轉發給客戶端,它是將服務器隱藏在自己的身后。從客戶端看來,它面對的只有一臺服務器,但是背后可能有1000臺服務器在提供服務。
『反向代理』這樣做有什么意義呢?
首先,它可以做『負載均衡』。比如說,對于同一個web服務,有10臺服務器可以提供服務,但是每臺服務器的負荷不太一樣,如果一個請求發送到負荷較高的服務器,那么它的處理時間可能會稍長一點,但是客戶端是不知道哪一臺服務器比較空閑,所以將請求發送到『反向代理』服務器,它是知道每臺服務器的負載的,這樣由它將請求轉發到相對空閑的服務器,以便更快的響應客戶端。
然后,它可以減輕后端服務器的一些壓力,比如很多靜態資源或者緩存數據,可以直接放在反向代理服務器上,不用將這些請求傳遞到后端服務器,相對來說減輕了后端服務器的壓力。
它還可以對請求做進一步的封裝和解封,比如想把所有請求升級到ssl加密連接,卻不想改造后端服務器,那么可以只在客戶端-反向代理服務器之間使用ssl加密連接,而代理服務器-后端服務器之間仍舊使用普通http連接,這樣就事半功倍了。
同時,反向代理服務器還可以為后端服務器阻擋一些網絡攻擊,提升后臺服務器的安全性。
總之,反向代理服務器對于后端服務器,就是一個接口人的角色,它接洽了所有客戶端的請求,并且進行簡單的處理,然后分發到后端服務器。
#專欄作家#
給產品經理講技術,微信公眾號(pm_teacher),人人都是產品經理專欄作家。資深程序猿,專注客戶端開發若干年,對前端、后臺技術略懂,熱衷于對新的科技領域的探索。
本文原創發布于人人都是產品經理。未經許可,禁止轉載。
題圖來自Pixabay,基于CC0協議
戈
還在因為”不懂技術”被開發忽悠?15天系統化解鎖產品經理必懂的程序/代碼、前端、后端、數據庫4大模塊基礎技術知識。助你日常溝通更順暢,產品設計不挖坑!
詳情戳>http://996.pm/7daXE 或咨詢起點學院蘑菇(wx:qdxymg)
什么情況下或者說什么樣的公司要使用反向代理服務器呢
反向代理和代理我怎么感覺是一樣的??
確實寫得好
我也是。。。沒看懂 ??
邏輯上是差不多,就是反一下。作用上可以起到均衡負載的作用,不過除此之外都一樣了= =
不錯,不錯,希望有更多的作品,贊!
感謝分享,技術貼看起來有點吃力 ??