反向代理,這個詞相信搞網絡的朋友都很熟悉的,但是具體是什么意思呢?說實話,復雜的我也不懂,就我個人理解而言,反向代理有很多用途,比如說保護真實服務器不被外界攻擊,加速網絡等等。今天我們要介紹的就是加速網絡的一種。
首先介紹一下場景:
我有一個網站,部署在法國的服務器上,域名是www.2.com,國內用戶直接訪問這個網站的時候,網絡速度非常的慢,因為大家都知道,中國到法國的網絡是經過了很遙遠的距離傳輸。國內的服務器雖然速度很快,但是費用卻很貴,那么有什么辦法可以加速國內用戶訪問我法國的網站呢?今天我就給大家介紹一種反向代理加速的方法。
首先我們要找一台訪問法國服務器速度比較快的服務器,折中一點我們可以找香港的服務器,配置不需要太高,為什么挑香港呢?因為香港是我們中國作為對外的一個轉接口,大陸到香港的網絡速度不會慢,而香港到法國的速度又不會太慢,所以我們選擇香港來中轉。
實現方法:在香港服務器上部署反向代理服務,然后將域名解析到香港服務器,當用戶訪問我網站的時候,實際是訪問了香港的服務器,然后由香港服務器將用戶的請求轉發到法國服務器,法國服務器處理完成后,再將結果返回給香港服務器,香港服務器接收后再返回到用戶瀏覽器,這樣一來,用戶並沒有直接訪問速度慢的法國服務器,而是經過了香港服務器的中轉,因此訪問的速度有所提高。
整個流程如下圖所示:
那么如何實現這樣的反向代理服務呢?我們選擇的是Nginx,這款大名頂頂的工具,它出生的目的就是為了實現反向代理服務。下面是一個簡單的反向代理服務配置:
upstream remote #這里的remote是可以隨便取的名稱 { keepalive 30; #這里指定保持連接,時間為30秒 server www.2.com; #這個www.2.com是目標網站的IP } server { listen 80; #這個是中轉機綁定的端口 server_name www.1.com; #這里是中轉機綁定的域名 proxy_buffering off; #這兩行是指關閉傳輸緩沖區,降低內存占用,提高響應速度 proxy_request_buffering off; location / { proxy_set_header X-Real-IP $remote_addr; #將用戶的真實IP傳遞給目標服務器 proxy_set_header Host www.2.com; #設置Host為www.2.com,因為目標服務器的網站綁定了域名www.2.com proxy_set_header Connection Keep-Alive; #設置保持長連接,時間為上面upstream里的keepalive的30秒 proxy_pass http://remote; #這里的remote對應upstream設置的名稱 sub_filter "2.com" "1.com"; #這里表示將目標網站的字符串“2.com”全部替換成“1.com” sub_filter "哈哈" "你好"; #這里表示將目標網站的字符串“哈哈”全部替換成“你好” sub_filter_once off; #這里表示上面的替換是替換全部匹配成功的內容,而不是只替換一次 } }