## 正向代理的概念
正向代理,也就是傳說中的代理,他的工作原理就像一個跳板,簡單的說,**我是一個用戶,我訪問不了某網站,但是我能訪問一個代理服務器,這個代理服務器呢,他能訪問那個我不能訪問的網站,于是我先連上代理服務器,告訴他我需要那個無法訪問網站的內容,代理服務器去取回來,然后分會給我**。從網站的角度,只能在代理服務器來取內容的時候有一條記錄,有時候并不知道是用戶的請求,也隱藏了用戶的資料,這取決于代理告不告訴網站。
結論就是,正向代理是一個位于客戶端和服務器(origin server)之間的服務器,為了從原始服務器取得內容,客戶端向代理發送一個請求并制定目標(原始服務器),然后代理向原始服務器轉交請求并將獲得的內容返回給客戶端。客戶端必須要進行一些特別的設置才能使用正向代理。
比如,我們翻墻到國外去看Facebook。
## 反向代理的概念
例如用戶訪問 http://www.test.com/readme,但是www.test.com上并不存在readme頁面,他是**偷偷從另外一臺服務器取回來,然后作為自己的內容返回用戶**,但用戶并不知情。這里所提到的www.test.com 這個域名對應的服務器就設置了反向代理功能。
結論就是,反向代理正好相反,對于客戶端而言它就像是原始服務器,并且客戶端不需要進行任何特別設置。客戶端向反向代理的命名空間(name-space)中的內容發送普通請求,接著反向代理將判斷向何處(原始服務器)轉交請求,并將獲得的內容返回給客戶端,就像這些內容原本就是它自己的一樣。
一般我們通過反向代理來做動靜分離和負載均衡,LNMPA就是基于反向代理實現的架構。
![7178f37ejw1emxerfe6ahj20rr0ifgmk.jpg-22.1kB][1]
### 反向代理的作用
一. **保護網站安全**,任何來自Internet的請求都必須先經過代理服務器;
![7178f37ejw1emxerfr0hej20g807wt8y.jpg-18.8kB][2]
二. **通過配置緩存功能加速Web請求**:可以緩存真實Web服務器上的某些靜態資源,減輕真實Web服務器的負載壓力;
![7178f37ejw1emxerg2rq8j20g807w0sw.jpg-16kB][3]
三. **實現負載均衡**:充當負載均衡服務器均衡地分發請求,平衡集群中各個服務器的負載壓力;
![7178f37ejw1emxerge7t3j20qh0gcjs5.jpg-19.9kB][4]
## 兩者的區別
### 從用途上來講
正向代理的典型用途是為在防火墻內的局域網客戶端提供訪問Internet的途徑。正向代理還可以使用緩存特性減少網絡使用率。
反向代理的典型用途是將防火墻后面的代理服務器提供給Internet用戶訪問。反向代理還可以為后端的多臺服務器提供負載均衡,或為后端較慢的服務器提供緩沖服務。另外反向代理還可以啟用高級URL策略和管理技術,從而是處于不同web服務器系統的web頁面同時存在于同一個URL空間下。
### 從安全性來講
正向代理允許客戶端通過訪問任意網站并且隱藏客戶自身,因此你必須采取安全措施以確保僅為經過授權的客戶端提供服務。
反向代理對外都是透明的,訪問者并不知道自己訪問的是一個代理。
[1]: http://static.zybuluo.com/a5635268/l6c4uyze04knipwvan0gy5k3/7178f37ejw1emxerfe6ahj20rr0ifgmk.jpg
[2]: http://static.zybuluo.com/a5635268/fun4yl2ey19102b5gbstei2h/7178f37ejw1emxerfr0hej20g807wt8y.jpg
[3]: http://static.zybuluo.com/a5635268/hys3ye7b8i1px0xnjillcoc7/7178f37ejw1emxerg2rq8j20g807w0sw.jpg
[4]: http://static.zybuluo.com/a5635268/nvgojxxhl0lcquj4ksb88khe/7178f37ejw1emxerge7t3j20qh0gcjs5.jpg
- Apache
- 【Apache運維基礎(1)】Apache的安裝與使用
- 【Apache運維基礎(2)】主配置文件說明
- 【Apache運維基礎(3)】虛擬主機配置說明
- 【Apache運維基礎(4)】Apache的Rewrite攻略(1)
- 【Apache運維基礎(5)】Apache的Rewrite攻略(2).htaccess文件
- 【Apache運維基礎(6)】Apache的日志管理與分析
- 工具篇
- supervisor進程管理器
- Haproxy安裝與配置
- Nginx
- 【nginx網站性能優化篇(1)】gzip壓縮與expire瀏覽器緩存
- 【nginx網站性能優化篇(2)】反向代理實現Apache與Nginx的動靜分離(LNMPA)
- 【nginx網站性能優化篇(3)】反向代理實現負載均衡
- 【nginx網站性能優化篇(4)】理解nginx的高并發原理及其配置調優
- 【nginx運維基礎(1)】Nginx的編譯安裝與使用
- 【nginx運維基礎(2)】Nginx的配置文件說明及虛擬主機配置示例
- 【nginx運維基礎(3)】Nginx的編譯PHP
- 【nginx運維基礎(4)】Nginx的日志管理(日志格式與定時分割日志)
- 【nginx運維基礎(5)】Nginx的location攻略
- 【nginx運維基礎(6)】Nginx的Rewrite語法詳解
- 【nginx運維基礎(7)】配置SSL支持https訪問
- 【nginx運維基礎(8)】配置支持http2協議
- 【nginx運維基礎(9)】了解PHP-FPM 與 Nginx 的通信機制
- 其它
- Apache與Nginx下php隱藏http頭部版本信息的實現方法
- CURL與PHP-CLI的應用【CLI篇】
- CURL與PHP-CLI的應用【Curl篇】
- Linux之SAMBA共享服務
- 【Linux常識篇(1)】所謂的正向代理與反向代理
- 【Linux常識篇(2)】理解inode
- 【Linux常識篇(3)】文件及文件夾的ctime atime mtime的含義詳解
- centOS使用手記
- 服務器日志分析
- 高頻命令
- df
- mv
- gzip
- cp
- tar
- touch
- cat
- uniq
- nl
- more
- rmdir
- less
- mkdir
- head
- rm
- tail
- 五大查詢命令
- vi&vim
- ls與目錄結構
- grep
- awk
- sed
- 其他高頻命令